Apa yang Tepat Berlaku Apabila Anda Swipe Aplikasi Android Daripada Senarai Aplikasi Terkini?
Apabila anda menggesek aplikasi dari senarai apl Android yang sedang berjalan, apa yang sebenarnya berlaku kepada aplikasi dan data? Bacalah semasa kami menyiasat.
Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan Android Peminat - bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.
Soalan
Pembaca penggemar Android Eldarerathis ingin tahu tentang fungsi aplikasinya yang membolehkan anda menarik senarai aplikasi yang sedang berjalan melalui butang rumah dan kemudian leret ke kanan, mungkin untuk menutupnya:
Senarai aplikasi baru-baru ini dalam Ice Cream Sandwich menambahkan keupayaan untuk menggeser aplikasi keluar dari senarai, sehingga menolaknya secara permanen (dan sejauh yang saya tahu ini adalah fungsi vanili, bukan CM / custom ROM one). Penyampaian dokumentasi dan platform tidak kelihatan untuk melindungi fungsi bawah fungsi ini, tetapi saya ingin tahu untuk mengetahui sistem sebenarnya.
Lebih lanjut menambah rasa ingin tahu saya, saya membuat keputusan untuk melakukan ujian cepat: Saya memulakan Muzik pada pemasangan CM9, kemudian disokong olehnya. Saya kemudian menyemak senarai aplikasi baru-baru ini dan melihatnya memang ada (dan dalam keadaan yang betul, berdasarkan imej kecil). Saya kemudian masuk
Tetapan-> Aplikasi
dan memaksa berhenti aplikasi Muzik, tetapi ia masih disenaraikan dalam senarai baru-baru ini, membawa saya untuk mempercayai ia tidak berkaitan dengan proses yang berlarutan di latar belakang.Menyedari sekarang bahawa Muzik mungkin telah menjadi pilihan yang buruk, saya juga diuji dengan aplikasi USA Today. Ini dipamerkan pada dasarnya tingkah laku yang sama, dan sepertinya ia telah dipaksa untuk "melancarkan semula" selepas kekerasan berhenti (yang masuk akal) walaupun lakaran kecil dalam senarai aplikasi baru-baru ini tidak mencerminkan ini (cache, saya meneka?).
Jadi, apa sebenarnya yang berlaku di peringkat OS apabila anda sapu aplikasi keluar dari senarai baru-baru ini? Adakah ia hanya memadamkan data aplikasi daripada RAM dan sampah mengumpulnya, memusnahkan keadaannya yang disimpan?
Apa sebenarnya yang berlaku apabila anda sapu apl keluar senarai?
Jawapannya
Penyumbang Android Peminat Austin Mills menawarkan beberapa pandangan:
Apl swiping dari senarai aplikasi baru-baru ini adalah vanila, dan ya, tidak didokumenkan dengan baik. Ini telah menjadi topik perbincangan yang cukup baik dalam pelbagai forum Android ... konsensus nampaknya paling baik diterangkan di sini dalam beberapa komen: bahawa tingkah laku itu sama tetapi tidak sama dengan menutup aplikasi - pada umumnya (untuk aplikasi yang tidak mentakrifkan pengendalian butang belakang yang jelas) ia sama dengan memukul kembali masa yang cukup dari dalam aplikasi yang anda keluar daripada itu.
Pautan itu mempunyai beberapa butiran lanjut tentang spesifik, tetapi secara keseluruhan anda boleh memikirkannya sebagai berhenti permohonan.
Tertentu kepada aplikasi Muzik, saya percaya ia memulakan perkhidmatan, jadi sementara tugas itu sendiri (aplikasi Muzik / UI) mungkin ditutup, perkhidmatan itu terus berjalan di latar belakang supaya muzik anda tidak tiba-tiba berhenti hanya kerana tugas telah dibersihkan untuk sebab-sebab pengurusan ingatan. Itu mungkin memberi kesan kepada apa yang anda lihat.
Kemudian, menyertai lingkaran hidup soalan dan jawab, Eldarerathis kembali dengan beberapa penyelidikan sendiri untuk menyelesaikan jawabannya:
Saya nampaknya telah menemui istilah carian ajaib yang membawa kepada beberapa penjelasan dari pekerja Google. Khususnya, saya dapati beberapa tempat berbeza di mana Dianne Hackborn menerangkan apa yang berlaku apabila anda sapu sesuatu daripada senarai terbaru. Yang pertama ialah komen pada salah satu jawatan Google+ beliau:
Hat [W] secara khusus berlaku apabila anda menggeser tugas baru-baru ini adalah: (1) membunuh mana-mana latar belakang atau proses kosong aplikasi (lihat di sini untuk maksud ini), dan (2) menggunakan API baru untuk memberitahu sebarang perkhidmatan permohonan mengenai tugas yang dikeluarkan supaya dapat melakukan apa yang difikirkannya sesuai.
Beliau juga menyatakan dalam komen blog:
Sebenarnya, mengalih keluar entri dalam tugas baru-baru ini akan membunuh mana-mana proses latar belakang yang wujud untuk proses itu. Ia tidak akan secara langsung menyebabkan perkhidmatan berhenti, namun terdapat API bagi mereka untuk mengetahui tugas itu dikeluarkan untuk menentukan sama ada mereka mahu ini bermakna mereka harus berhenti. Ini adalah supaya mengeluarkan kata tugas tugas baru dari aplikasi e-mel tidak akan menyebabkan ia berhenti memeriksa e-mel.
Sekiranya anda benar-benar mahu menghentikan aplikasi sepenuhnya, anda boleh menekan pada tugas baru-baru ini untuk pergi ke maklumat aplikasinya, dan tekan kekerasan berhenti di sana. Perhentian tentera adalah pembunuhan lengkap aplikasi - semua proses terbunuh, semua perkhidmatan berhenti, semua pemberitahuan dialih keluar, semua penggera dihapuskan, dan sebagainya. Aplikasi ini tidak dibenarkan dilancarkan semula sehingga diminta secara eksplisit.
Jadi, nampaknya ringkasannya ialah yang meleret aplikasi keluar dari senarai akan membunuh semua proses latar belakang untuk aplikasinya dahulu, kemudian gunakan
onTaskRemoved
untuk memaklumkan aplikasi bahawa tugas latar belakang telah dialih keluar. Pada ketika itu nampaknya terpulang kepada aplikasi untuk memutuskan apa yang berlaku, jadi saya rasa ada secara teknikal tidak peraturan yang keras dan cepat tentang apa yang berlaku kepada aplikasi di luar titik itu.
Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.