Daftar aplikasi terbaru di Ice Cream Sandwich menambahkan kemampuan untuk menghapus aplikasi dari daftar, sehingga mengabaikannya secara permanen (dan sejauh yang saya tahu ini adalah fungsi vanilla, bukan CM / custom ROM). Dokumentasi dan sorotan platform tampaknya tidak mencakup pekerjaan di bawah kap fungsi ini, tapi saya ingin tahu apa yang sebenarnya dilakukan sistem.
Lebih lanjut menambah rasa ingin tahu saya, saya memutuskan untuk melakukan tes cepat: Saya memulai Musik pada instalasi CM9, kemudian mundur. Saya kemudian memeriksa daftar aplikasi terbaru dan melihatnya memang ada di sana (dan dalam kondisi yang tepat, berdasarkan thumbnail). Saya kemudian masuk Settings->Applications
dan paksa menghentikan aplikasi Musik, tetapi itu masih terdaftar di daftar baru-baru ini, membuat saya percaya itu tidak terhubung ke proses berlama-lama di latar belakang.
Menyadari sekarang bahwa Musik mungkin merupakan pilihan yang buruk, saya juga menguji dengan aplikasi USA Today. Ini pada dasarnya menunjukkan perilaku yang sama, dan sepertinya dipaksa untuk "meluncurkan kembali" setelah kekuatan berhenti (yang masuk akal) meskipun thumbnail dalam daftar aplikasi terbaru tidak mencerminkan hal ini (dalam cache, saya tebak?).
Jadi, apa yang sebenarnya terjadi pada level OS ketika Anda menggesek aplikasi dari daftar terakhir? Apakah itu hanya menghapus data aplikasi dari RAM dan sampah mengumpulkannya, menghancurkan keadaan yang disimpan?
sumber
Tampaknya saya telah menemukan istilah pencarian ajaib yang mengarah pada beberapa penjelasan dari karyawan Google. Secara khusus, saya menemukan beberapa tempat berbeda di mana Dianne Hackborn menjelaskan apa yang terjadi ketika Anda menggesek sesuatu dari daftar terakhir. Yang pertama adalah komentar pada salah satu pos Google+nya :
Dia juga mencatat dalam komentar blog :
Jadi, sepertinya ringkasannya adalah bahwa menggesek aplikasi dari daftar terlebih dahulu akan membunuh semua proses latar belakang untuk aplikasi, kemudian gunakan
onTaskRemoved
untuk memberi tahu aplikasi bahwa tugas latar belakang telah dihapus. Pada saat itu sepertinya tergantung pada aplikasi untuk memutuskan apa yang terjadi, jadi saya kira secara teknis tidak ada aturan yang sulit dan cepat tentang apa yang terjadi pada aplikasi di luar titik itu.sumber
Ada beberapa info dalam kode sumber di kelas com.android.internal.policy.impl.RecentApplicationsBackground dan com.android.internal.policy.impl.RecentApplicationsDialog .
Jika saya membaca ini dengan benar, ada penangan khusus untuk memilih aplikasi tetapi tidak ada yang khusus untuk menggeseknya kecuali
onDetachedFromWindow()
, yang memanggilcom.android.View.onDetachedFromWindow()
yang pada dasarnya menyembunyikan elemen dan membersihkan data itu. Ini akan mengisyaratkan fakta bahwa tidak ada yang istimewa terjadi pada menggesek aplikasi, yang sesuai dengan jawaban Austin Mills, karena karena daftar tersebut tidak menunjukkan aplikasi aktif,onPause()
panggilan sistem dan lainnya yang dilakukan ketika "berhenti" dari suatu aplikasi memiliki sudah terjadi.sumber
Saya pikir itu akan melakukan hal yang sama seperti tombol kembali. Kecuali satu perubahan kecil. Itu akan
finish()
semua aktivitas / fragmen dalam aplikasi.Baru saja melakukan sedikit pengujian dengan aplikasi selfbuild kecil. Anda dapat menguji juga. Inilah aplikasi pengujian saya: https://bitbucket.org/Leandros99/lifecycletest (unduh juga tersedia. Bagi mereka yang tidak dapat membangun.)
Di setiap metode siklus aktivitas ( http://developer.android.com/reference/android/app) /Activity.html#ActivityLifecycle ) cetak aplikasi log. Anda dapat melihatnya dengan adb logcat (instal Android SDK, cd ke platform-tools dalam cmd / shell dan ketik
adb logcat
. Sekarang Anda akan melihat, setiap kali Anda melakukan sesuatu seperti menekan kembali atau tombol home, aplikasi mencetak metode siklus hidup, yang disebutkan di atas. )Pertanyaan Anda: Jika saya menggesek aplikasi dari laci aplikasi terbaru,
onDestroy
metode akan dipanggil. Itu hampir sama dengan tombol kembali.Semoga saya sedikit membantu. Jika ada pertanyaan, tanyakan saja.
sumber
Ini menutup aplikasi, dan datanya yang disimpan dalam RAM. Dengan demikian, memberi Anda lebih banyak ruang RAM sehingga Anda dapat menjalankan aplikasi lain. Namun, layanan latar belakang TIDAK secara otomatis ditutup paksa sebagai akibat dari penutupan aplikasi yang menggunakan.
sumber