Apa yang terjadi pada program yang berjalan ketika tombol "home" ditekan di ponsel Android?

27

Satu hal yang membingungkan saya. Sepertinya saya menggunakan beberapa program di Android dan menekan tombol "home", saya melihat layar beranda dan dapat menjalankan kembali program itu dan melihat program itu dalam keadaan yang sama seperti sebelumnya - jadi sepertinya program ini tidak sepenuhnya dihidupkan ulang, hanya ditangguhkan dan kemudian dilanjutkan.

Namun itu tampaknya tidak terjadi secara konsisten dengan game Air Control. Kadang-kadang ketika saya bermain Air Control dan tekan "home" dan kemudian jalankan kembali Air Control - itu dijeda (seolah-olah saya menekan tombol "pause") dan saya bisa melanjutkan permainan. Terkadang hal yang sama menyebabkan Air Control menjatuhkan permainan dan memulai lagi.

Jadi sepertinya saya tidak mengerti sesuatu.

Apa masalahnya di sini? Apa yang terjadi pada suatu program ketika "rumah" ditekan? Apakah itu terus berjalan atau apa fungsinya?

sharptooth
sumber
Saya ragu bahwa menekan tombol home menghasilkan pengurasan daya yang lebih tinggi.
Aliran

Jawaban:

12

Menekan akan Homemengalihkan Anda dari aplikasi ke layar beranda, sambil membiarkan aplikasi Anda berjalan di latar belakang. Ini agak seperti berpindah antar windows pada PC Windows.

Kecuali bahwa ketika ponsel Anda kehabisan sumber daya seperti memori, itu akan mulai menutup aplikasi yang berjalan di latar belakang, sehingga ponsel Anda memiliki sumber daya yang cukup untuk apa yang Anda coba lakukan sekarang. Game seringkali berada di antara aplikasi pertama yang akan "dibunuh" ponsel untuk menghemat sumber daya karena mereka sering menggunakan lebih banyak memori dan CPU daripada aplikasi lain. Inilah sebabnya terkadang game Anda masih berjalan dijeda, dan terkadang Android telah menutupnya untuk Anda.

The Backtombol adalah cara untuk aplikasi dekat sehingga mereka benar-benar ditutup.

Lihat juga. Apa cara yang tepat untuk menutup aplikasi di Android?

GATambar
sumber
26

Dokumen Pengembangan Android Tugas dan Back Stack sebenarnya mencakup ini dengan cukup baik. Kutipan yang relevan:

Suatu tugas adalah unit kohesif yang dapat bergerak ke "latar belakang" ketika pengguna memulai tugas baru atau pergi ke layar Beranda, melalui tombol HOME. Sementara di latar belakang, semua aktivitas dalam tugas dihentikan, tetapi tumpukan belakang untuk tugas tetap utuh — tugas tersebut hanya kehilangan fokus saat tugas lain berlangsung, seperti yang ditunjukkan pada gambar 2. Tugas kemudian dapat kembali ke " foreground "sehingga pengguna dapat mengambil di mana mereka tinggalkan. Misalkan, misalnya, bahwa tugas saat ini (Tugas A) memiliki tiga aktivitas di tumpukannya — dua di bawah aktivitas saat ini. Pengguna menekan tombol HOME, lalu memulai aplikasi baru dari peluncur aplikasi. Saat layar Beranda muncul, Tugas A masuk ke latar belakang. Ketika aplikasi baru dimulai, sistem memulai tugas untuk aplikasi itu (Tugas B) dengan setumpuk aktivitasnya sendiri. Setelah berinteraksi dengan aplikasi itu, pengguna kembali ke Rumah lagi dan memilih aplikasi yang awalnya memulai Tugas A. Sekarang, Tugas A sampai di latar depan — ketiga aktivitas dalam tumpukannya utuh dan aktivitas di bagian atas tumpukan dilanjutkan. Pada titik ini, pengguna juga dapat beralih kembali ke Tugas B dengan kembali ke Rumah dan memilih ikon aplikasi yang memulai tugas itu (atau dengan menyentuh dan menahan tombol HOME untuk mengungkapkan tugas terbaru dan memilih satu). Ini adalah contoh multitasking di Android. pengguna juga dapat beralih kembali ke Tugas B dengan kembali ke Rumah dan memilih ikon aplikasi yang memulai tugas itu (atau dengan menyentuh dan menahan tombol HOME untuk mengungkapkan tugas terbaru dan memilih satu). Ini adalah contoh multitasking di Android. pengguna juga dapat beralih kembali ke Tugas B dengan kembali ke Rumah dan memilih ikon aplikasi yang memulai tugas itu (atau dengan menyentuh dan menahan tombol HOME untuk mengungkapkan tugas terbaru dan memilih satu). Ini adalah contoh multitasking di Android.

Catatan: Banyak tugas dapat dilakukan di latar sekaligus. Namun, jika pengguna menjalankan banyak tugas latar belakang secara bersamaan, sistem mungkin mulai merusak kegiatan latar belakang untuk memulihkan memori, menyebabkan status aktivitas menjadi hilang. Lihat bagian berikut tentang status Aktivitas.

Ringkasan : Tugas dipindahkan ke latar belakang saat Anda menekan Homedan duduk di memori, tidak benar-benar melakukan apa pun dan mempertahankan statusnya. Ini berarti bahwa (secara umum) Anda dapat beralih kembali ke tugas dan itu akan mengambil di mana ia tinggalkan. Namun, sistem Android dapat - dan akan - membunuh tugas latar belakang jika perlu mengambil kembali memori. Kapan dan jika ini terjadi sepenuhnya tergantung pada sistem, dan mungkin itulah sebabnya Anda melihat perilaku tidak konsisten saat melanjutkan.

Jika tugas dihancurkan oleh sistem, tugas itu harus dibuat ulang saat Anda meluncurkannya lagi. Jadi, kecuali pembuat aplikasi telah mengambil langkah-langkah untuk menyelamatkan status aplikasi selama proses penghancuran, itu akan hilang (dan menyimpan keadaan yang tepat dalam hal-hal seperti game cukup tidak praktis).

Dokumen lain yang bagus (tetapi juga bertele-tele) adalah dokumen yang mencakup Siklus Hidup Aktivitas (ada bagan alur yang bagus jika Anda gulirkan sedikit ke bawah).

eldarerathis
sumber
Jadi mereka dibunuh berdasarkan tugas, bukan berdasarkan aktivitas / proses. Yang terakhir akan memungkinkan pembunuhan sebagian tugas, yang mungkin tidak diinginkan.
jiggunjer
4

Menekan tombol Rumah memungkinkan pengguna untuk memulai Tugas baru, dengan menunjukkan peluncur. Semua Tugas aktif (dan karenanya Aktivitas termasuk contoh "Kontrol Udara" Anda) akan memanggil metode mereka onPause().

Terserah Aplikasi (dan Aktivitas mereka) untuk mengembalikan keadaan sebelumnya yang tepat ketika kembali terlihat. Mungkin juga Proses Aplikasi terbunuh saat Kegiatan dilatar belakangi, tetapi ini seharusnya tidak memengaruhi pengalaman pengguna. Pengguna seharusnya tidak dapat memberi tahu perbedaan jika suatu Kegiatan hanya dijeda atau jika itu juga dibunuh. Ini bisa menjelaskan perilaku berbeda dari Kontrol Udara yang bisa menjadi petunjuk implementasi yang salah dari manajemen siklus hidup Android.

Mengalir
sumber
Saya pikir dengan "membunuh" maksudmu berhenti, bukannya dihancurkan. Saya percaya pada terminologi Linux normal ketika Anda mematikan suatu proses (misalnya Aktivitas) Anda destroy()komponen aplikasi yang sesuai.
jiggunjer
Tidak, maksudku hancur.
Aliran
Ketika Anda menekan tombol home onStopmetode ini dipanggil. Proses yang terbunuh tidak berarti aktivitasnya onDestroyeddisebut metodenya, meskipun memang mirip. "Membunuh" proses Kegiatan berarti VM dihapus dari RAM. Bagi saya ini (Android membunuhnya) tampaknya akan memengaruhi pengalaman pengguna.
jiggunjer
4

Reputasi saya masih terlalu rendah di situs ini untuk memilih, jadi saya menjawab untuk menegaskan jawaban Flow. Saya terus mengalami masalah ini di salah satu aplikasi saya. Saya memiliki berbagai kontrol pemintal dan Anda harus secara eksplisit menyimpan statusnya di onPause () dan kemudian mengembalikan status di onResume () - Android tidak mengingat statusnya secara otomatis.

Komplikasi lain adalah bahwa terkadang Android akan memanggil fungsi onCreate () aplikasi ketika Anda hanya berharap untuk memanggil onResume ().

Jadi masalah Anda dengan Kontrol Udara (atau aplikasi lain) khusus untuk aplikasi itu dan Anda harus melaporkan perilaku tersebut kepada pengembang untuk diperbaiki. Sebagian besar aplikasi memiliki email kontak di Pasar.

BTW, jika Anda ingin memahami siklus hidup aplikasi, saya merekomendasikan Bab 2 dari Hello Burn, Android Ed, terutama gambar 2.3.

Gdalya
sumber
3

Tombol Beranda Ditekan saat dalam aplikasi:

Sebagian besar aplikasi akan menyimpan statusnya (bit data apa pun yang diperlukan untuk menjaga dirinya konsisten ketika sedang dilanjutkan), dan perangkat akan beralih ke aplikasi peluncur.

Tombol Beranda Ditekan saat di layar Beranda:

Ini dapat dikonfigurasi oleh banyak peluncur pihak ke-3; Namun banyak dari mereka default untuk membawa Anda kembali ke layar utama "utama" Anda (peluncur default melakukan ini).

Hal yang mungkin menjadi perhatian teman Anda:

Mengalihkan aplikasi dapat menjadi memori yang intensif dan menyebabkan beberapa disk menulis untuk menyimpan data. Ini menggunakan baterai; namun biasanya ini bukan penyebab utama pengurasan baterai pada perangkat (sistem operasi dioptimalkan untuk melakukan hal-hal ini).

Beberapa aplikasi akan terus berjalan sebagai aplikasi latar belakang, jadi menekan tombol beranda tidak akan mematikannya (mis. Google Play Music akan tetap bermain setelah menekan tombol beranda).

Teman Anda mungkin khawatir bahwa dengan menekan tombol beranda Anda tidak keluar dari program, dan karena itu ia masih berjalan. Android akan membongkar aplikasi tersebut seperlunya.

Anda dan teman Anda harus lebih mementingkan tampilan - yang menggunakan daya paling besar.

Dylan Yaga
sumber