Untuk apa sebenarnya atribut itu taskAffinity
digunakan? Saya telah membaca dokumentasi tetapi saya tidak bisa mengerti banyak.
Adakah yang bisa menjelaskan afinitas tugas dalam istilah awam?
Untuk apa sebenarnya atribut itu taskAffinity
digunakan? Saya telah membaca dokumentasi tetapi saya tidak bisa mengerti banyak.
Adakah yang bisa menjelaskan afinitas tugas dalam istilah awam?
Jawaban:
Untuk apa Android Task Affinity digunakan?
Aplikasi android memiliki Aktivitas yang membentuk tumpukan seperti setumpuk kartu. Jika Anda memulai aplikasi android, dan memulai lima aktivitas A, B, C, D, E. Mereka akan membentuk tumpukan
E - chat view
D - weather screen
C - map view
B - weather screen
A - login screen
E adalah Aktivitas terakhir yang harus dimulai dan itu terlihat. Jika Anda menutup E, D akan ditampilkan. Jika Anda menutup D, C akan ditampilkan. dll.
Perhatikan bahwa Aktivitas B
dan D
merupakan aktivitas yang sama. Bagaimana jika pengguna membuat beberapa modifikasi pada D weather screen
, dan kemudian memutuskan untuk menutup aktivitas, lalu menutup C Map view
?
Kemudian pengguna akan kembali ke layar cuaca dan pengguna akan tidak senang karena perubahan yang dibuat di level D weather screen
tidak disimpan di level B weather screen
. Meskipun merupakan aktivitas yang sama, ini adalah NEGARA yang berbeda dari aktivitas tersebut.
Pengguna memiliki 5 tumpukan aktivitas, dan dua di antaranya adalah aktivitas yang sama. Menghilangkan semua 5 dari tumpukan akan menciptakan fenomena di mana Anda akan berinteraksi dengan dua versi berbeda dari aktivitas yang sama dan bisa sangat membingungkan.
Pengguna biasanya tidak berpikir dalam kerangka aktivitas yang kaku. Mereka berpikir: "ooh tampilan cuaca saya akan membuat perubahan di sana" dan kemudian mereka ingin kembali ke tampilan Peta. Kemudian kembali lagi karena ingin kembali ke layar Login. Mengapa B weather app
pertunjukan dan mengapa tidak menyimpan pengaturan dari level D
?
Pemrogram mungkin dapat mengurangi kebingungan jika Aktivitas B
dan D
ditautkan dalam status. Dengan cara itu, perubahan yang satu mengubah yang lain. Setiap kali pengguna membuka layar cuaca baru, itu diam-diam membuka satu contoh layar cuaca.
Dalam keadaan ini, mengubah taskAffinity dari Aktivitas mungkin diperlukan. Pengguna akan mengubah level D. Kemudian kembali ke level B. Dan melihat perubahan di B yang dibuat ke D.
Program ini menyimpan tumpukan yang dapat Anda backup, yang bagus, dan ketika pengguna membuka X instance dari aktivitas yang sama di tempat acak, semuanya adalah satu.
Slideshow dengan lebih banyak penjelasan: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
singleInstance
alih - alih menggunakan taskAffinity
?
taskAffinity
sama sekali :-( Penjelasannya tidak jelas. Luar biasa bahwa jawaban-jawaban ini mendapatkan begitu banyak suara positif.
taskAffinity
digunakan untuk menentukan nama tugas yang lebih disukai untuk dijalankan oleh aktivitas. Ketika sebuah Intent
berisi bendera FLAG_ACTIVITY_NEW_TASK
, aktivitas tersebut kemudian dimasukkan ke dalam tugas khusus ini (ditentukan oleh taskAffinity
).
Although it's the same activity, it's a different STATE of that activity.
Saya akan berkata, "Ini contoh lain dari aktivitas itu."
Afinitas menunjukkan tugas mana yang lebih disukai untuk dimiliki oleh suatu aktivitas.
Afinitas berperan dalam dua situasi:
Saat maksud yang meluncurkan aktivitas berisi tanda FLAG_ACTIVITY_NEW_TASK.
Saat aktivitas memiliki atribut allowTaskReparentingnya yang disetel ke "true".
Silakan lihat http://developer.android.com/guide/components/tasks-and-back-stack.html
Anda dapat menemukan semua kasus (dan beberapa kasus tepi kali) dalam presentasi mendetail ini
Silakan, lihat Memanipulasi tugas Android dan back-stack