Anda dapat melihat perbedaan antara dua konteks ketika Anda meluncurkan aplikasi Anda langsung dari layar beranda vs ketika aplikasi Anda diluncurkan dari aplikasi lain melalui niat berbagi.
Berikut adalah contoh praktis apa yang dimaksud dengan "perilaku tumpukan tidak standar", yang disebutkan oleh @CommonSenseCode, artinya:
Misalkan Anda memiliki dua aplikasi yang saling berkomunikasi, App1 dan App2 .
Luncurkan App2: MainActivity dari launcher. Kemudian dari MainActivity meluncurkan App2: SecondaryActivity . Di sana, baik menggunakan konteks aktivitas atau konteks aplikasi, kedua aktivitas hidup dalam tugas yang sama dan ini tidak masalah (mengingat bahwa Anda menggunakan semua mode peluncuran standar dan flag maksud). Anda dapat kembali ke MainActivity dengan menekan kembali dan di aplikasi terbaru Anda hanya memiliki satu tugas.
Misalkan sekarang Anda berada di App1 dan meluncurkan App2: MainActivity dengan maksud berbagi (ACTION_SEND atau ACTION_SEND_MULTIPLE). Kemudian dari sana cobalah untuk meluncurkan App2: SecondaryActivity (selalu dengan semua mode peluncuran standar dan bendera maksud). Yang terjadi adalah:
jika Anda meluncurkan App2: SecondaryActivity dengan konteks aplikasi di Android <10 Anda tidak dapat meluncurkan semua aktivitas dalam tugas yang sama . Saya telah mencoba dengan android 7 dan 8 dan SecondaryActivity selalu diluncurkan dalam tugas baru (saya kira karena App2: SecondaryActivity diluncurkan dengan konteks aplikasi App2 tetapi Anda berasal dari App1 dan Anda tidak meluncurkan aplikasi App2 secara langsung Mungkin di bawah tenda android mengenalinya dan menggunakan FLAG_ACTIVITY_NEW_TASK). Ini bisa baik atau buruk tergantung pada kebutuhan Anda, karena aplikasi saya buruk.
Di Android 10 aplikasi mogok dengan pesan
"Memanggil startActivity () dari luar konteks Aktivitas memerlukan bendera FLAG_ACTIVITY_NEW_TASK. Apakah ini yang benar-benar yang Anda inginkan?" .
Jadi untuk membuatnya bekerja di Android 10 Anda harus menggunakan FALG_ACTIVITY_NEW_TASK dan Anda tidak dapat menjalankan semua aktivitas dalam tugas yang sama.
Seperti yang Anda lihat, tingkah lakunya berbeda antara versi android, aneh.
jika Anda meluncurkan App2: SecondaryActivity dengan konteks aktivitas semuanya berjalan dengan baik dan Anda dapat menjalankan semua aktivitas dalam tugas yang sama yang menghasilkan navigasi backstack linier.
Saya harap saya telah menambahkan beberapa informasi yang berguna