Sesi Tanya & Jawab hari ini diberikan kepada kami milik Penggemar Android - subdivisi Stack Exchange, pengelompokan situs web Q & A berbasis komunitas.
Pertanyaan
Pembaca Android Enercusi Eldarerathis ingin tahu tentang fungsi aplikasi-gesek yang memungkinkan Anda untuk menarik daftar aplikasi yang berjalan melalui tombol home dan kemudian geser ke kanan, mungkin untuk menutupnya:
The recent apps list in Ice Cream Sandwich added the ability to swipe apps out of the list, thereby dismissing them permanently (and as far as I know this is a vanilla function, not a CM/custom ROM one). The documentation and platform highlights don’t appear to cover the under-the-hood workings of this functionality, but I’m curious to know what the system is actually doing.
Further adding to my curiosity, I decided to do a quick test: I started up Music on a CM9 install, then backed out of it. I then checked the recent apps list and saw it was indeed there (and in the proper state, based on the thumbnail). I then went into
Settings->Applications
dan memaksa menghentikan aplikasi Music, tetapi masih tercantum dalam daftar terbaru, membuat saya percaya bahwa itu tidak terhubung ke proses yang berlama-lama di latar belakang.
Menyadari sekarang bahwa Musik mungkin pilihan yang buruk, saya juga menguji dengan aplikasi USA Today. Ini pada dasarnya menunjukkan perilaku yang sama, dan sepertinya dipaksa "diluncurkan kembali" setelah pemberhentian paksa (yang masuk akal) meskipun gambar mini di daftar aplikasi terakhir tidak mencerminkan ini (cache, saya kira?).
Jadi, apa yang sebenarnya terjadi di tingkat OS saat Anda menggesek aplikasi dari daftar terbaru? Apakah itu hanya menghapus data aplikasi dari RAM dan sampah mengumpulkannya, menghancurkan statusnya yang disimpan?
Apa sebenarnya yang terjadi saat Anda menggesek aplikasi dari daftar?
Jawaban
Kontributor Android Enthusiast Austin Mills menawarkan beberapa wawasan:
Menggeser aplikasi dari daftar aplikasi terbaru adalah vanilla, dan ya, tidak terdokumentasi dengan baik. Ini telah menjadi topik diskusi dalam jumlah yang layak di berbagai forum Android … konsensus tampaknya paling baik dijelaskan di sini dalam beberapa komentar: bahwa perilaku mirip tetapi tidak sama dengan menutup aplikasi - secara umum (untuk aplikasi yang tidak mendefinisikan penanganan tombol back eksplisit) itu sama dengan memukul balik cukup dari dalam aplikasi yang Anda keluar darinya.
Tautan memiliki beberapa detail lebih lanjut tentang hal-hal spesifik, tetapi secara keseluruhan Anda dapat menganggapnya sebagai berhenti dari aplikasi.
Khusus untuk aplikasi Music, saya percaya ini memulai layanan, jadi sementara tugas itu sendiri (aplikasi / UI Musik) mungkin ditutup, layanan terus berjalan di latar belakang sehingga musik Anda tidak tiba-tiba berhenti hanya karena tugas dibersihkan karena alasan manajemen memori. Itu mungkin memengaruhi apa yang Anda lihat.
Kemudian, berpartisipasi dalam lingkaran pertanyaan dan jawaban, Eldarerathis kembali dengan beberapa penelitian sendiri untuk melengkapi jawabannya:
I appear to have found the magical search terms that led to some explanations from Google employees. Specifically, I found a couple of different places where Dianne Hackborn explains what happens when you swipe something out of the recent list. The first is a comment on one of her Google+ posts:
[W]hat specifically happens when you swipe away a recent task is it: (1) kills any background or empty processes of the application (see here for what this means), and (2) uses the new API to tell any services of the application about the task being removed so it can do whatever it thinks is appropriate.
She also notes in a blog comment:
Actually, removing an entry in recent tasks will kill any background processes that exist for the process. It won’t directly causes services to stop, however there is an API for them to find out the task was removed to decide if they want this to mean they should stop. This is so that removing say the recent task of an e-mail app won’t cause it to stop checking for e-mail.
If you really want to completely stop an app, you can long press on recent tasks to go to app info, and hit force stop there. Force stop is a complete kill of the app - all processes are killed, all services stopped, all notifications removed, all alarms removed, etc. The app is not allowed to launch again until explicitly requested.
So, it looks like the summary is that swiping an app out of the list will first kill all background processes for the app, then use
onTaskRemoved
untuk memberi tahu aplikasi bahwa tugas latar belakang telah dihapus. Pada titik itu sepertinya aplikasi terserah untuk memutuskan apa yang terjadi, jadi saya kira ada secara teknis tidak aturan keras dan cepat tentang apa yang terjadi pada aplikasi di luar titik itu.
Memiliki sesuatu untuk ditambahkan ke penjelasan? Bicaralah di komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang paham teknologi lainnya? Lihat diskusi lengkap di sini.