Saya menemukan beberapa kode untuk keluar dari aplikasi Android secara terprogram. Dengan memanggil salah satu dari kode berikut di onDestroy () apakah itu akan sepenuhnya berhenti dari aplikasi?
System.runFinalizersOnExit(true)
(ATAU)android.os.Process.killProcess(android.os.Process.myPid());
Saya tidak ingin menjalankan aplikasi saya di latar belakang setelah mengklik tombol berhenti. Tolong sarankan saya dapat menggunakan salah satu dari kode ini untuk keluar dari aplikasi saya? Jika demikian, kode mana yang dapat saya gunakan? Apakah ini cara yang baik untuk keluar dari aplikasi di Android?
Jawaban:
Karena API 16 Anda dapat menggunakan metode finishAffinity, yang tampaknya cukup dekat dengan menutup semua aktivitas terkait dengan namanya dan deskripsi Javadoc:
Karena API 21 Anda dapat menggunakan perintah yang sangat mirip
sumber
System.exit(0);
. Terima kasih atas jawaban Anda! Akhirnya saya menemukan solusi yang layak.System.exit(0)
adalah satu-satunya solusi yang bekerja untuk saya.ini adalah cara terbaik untuk keluar dari aplikasi Anda. !!!
Solusi terbaik untuk saya.
sumber
System.exit(0);
. Solusi yang tepat diposting oleh @sivi (jawabannya di atas)finishAffinity();
System.exit(0);
Jika Anda hanya akan menggunakan
finishAffinity();
tanpaSystem.exit(0);
aplikasi Anda akan berhenti tetapi memori yang dialokasikan masih akan digunakan oleh ponsel Anda, jadi ... jika Anda ingin aplikasi yang bersih dan benar-benar keluar, gunakan keduanya.Ini adalah metode paling sederhana dan bekerja di mana saja, keluar dari aplikasi secara nyata, Anda dapat memiliki banyak aktivitas yang dibuka masih akan berhenti semua tanpa masalah.
contoh pada klik tombol
atau jika Anda menginginkan sesuatu yang baik, misalnya dengan dialog peringatan dengan 3 tombol YA TIDAK dan BATAL
sumber
System.exit(0);
Anda tidak boleh membebaskan memori itu, sistem akan melakukannya untuk Anda jika membutuhkannya. Inilah perilaku yang dimaksud.Tolong pikirkan sangat keras jika Anda perlu mematikan aplikasi: mengapa tidak membiarkan OS mencari tahu di mana dan kapan untuk membebaskan sumber daya?
Kalau tidak, jika Anda benar-benar yakin, gunakan
Sebagai reaksi terhadap komentar @dave appleton: Hal pertama baca kombo pertanyaan / jawaban besar @ gabriel yang diposting: Apakah berhenti dari aplikasi tidak disukai?
Sekarang dengan asumsi kita memiliki itu, pertanyaan di sini masih memiliki jawaban, adalah kode yang Anda butuhkan jika Anda melakukan sesuatu dengan berhenti
finish()
. Jelas Anda dapat memiliki lebih dari satu kegiatan dll, tetapi bukan itu intinya. Mari kita jalankan oleh beberapa use caseJadi pada akhirnya, tentu saja,
finish()
tidak membunuh segalanya, tapi itu masih alat yang saya butuhkan. Jika ada usecase untuk "bunuh semua aktivitas", saya belum menemukannya.sumber
finish()
tidak akan mematikan aplikasi.finish()
digunakan sepanjang waktu:Call this when your activity is done and should be closed.
Ini efek yang sama seperti menekan tombol "kembali".Activity
(bukan siApplication
). Misalnya, Anda dapat memulai aktivitas baru untuk menunjukkan informasi kepada pengguna. Setelah batas waktu habis atau menekan 'OK' Anda mungkin memanggilfinish()
untuk kembali ke aktivitas panggilan.Saya pikir aplikasi itu harus dimatikan dalam beberapa kasus. Misalnya, ada aplikasi yang hanya bisa digunakan setelah login. Aktivitas login memiliki dua tombol, 'login' dan 'cancel'. Ketika Anda mengklik tombol 'batal', itu pasti berarti 'Hentikan aplikasi'. Tidak ada yang ingin aplikasi hidup di latar belakang. Jadi saya setuju bahwa beberapa kasus perlu mematikan aplikasi.
sumber
Buat
ExitActivity
dan nyatakan dalam manifes. Dan panggilanExitActivity.exit(context)
untuk keluar dari aplikasi.sumber
Tidak ada aplikasi yang berhenti di android , SampleActivity.this.finish (); akan menyelesaikan aktivitas saat ini.
Ketika Anda beralih dari satu aktivitas ke aktivitas lainnya, terus selesaikan aktivitas sebelumnya
sumber
Pertama-tama, pendekatan ini membutuhkan min Api 16.
Saya akan membagi solusi ini menjadi 3 bagian untuk menyelesaikan masalah ini secara lebih luas.
1. Jika Anda ingin keluar dari aplikasi dalam suatu Aktivitas, gunakan snipet kode ini:
2. Jika Anda ingin keluar dari aplikasi dalam kelas non Activity yang memiliki akses ke Activity, gunakan snipet kode ini:
3. Jika Anda ingin keluar dari aplikasi dalam kelas non Activity dan tidak dapat mengakses Aktivitas seperti Layanan, saya sarankan Anda untuk menggunakan BroadcastReceiver. Anda dapat menambahkan pendekatan ini ke semua Kegiatan Anda di proyek Anda.
Buat variabel instance LocalBroadcastManager dan BroadcastReceiver. Anda dapat mengganti getPackageName () + ". Closeapp" jika mau.
Tambahkan ini ke metode Kegiatan onCreate ().
Juga, jangan lupa untuk memanggil penerima yang tidak terdaftar di metode Aktivitas onDestroy ()
Untuk keluar dari aplikasi, Anda harus mengirim siaran menggunakan LocalBroadcastManager yang saya gunakan di kelas PlayService saya yang memperluas Layanan.
sumber
Anda dapat menggunakan
finishAndRemoveTask ()
dari API 21sumber
Itu tergantung pada seberapa cepat Anda ingin menutup aplikasi Anda.
Cara aman untuk menutup aplikasi Anda adalah finishAffinity ();
Ini menutup aplikasi Anda setelah semua proses selesai diproses. Ini mungkin perlu waktu. Jika Anda menutup aplikasi dengan cara ini, dan memulai kembali setelah beberapa saat, mungkin aplikasi baru Anda berjalan dalam proses yang sama. Dengan semua proses yang belum selesai dan objek tunggal dari aplikasi lama.
Jika Anda ingin memastikan, bahwa aplikasi Anda ditutup sepenuhnya gunakan System.exit (0);
Ini akan menutup aplikasi Anda dengan segera. Tetapi mungkin saja, Anda merusak file yang telah dibuka aplikasi Anda atau edit pada preferensi bersama tidak selesai. Jadi gunakan ini dengan hati-hati.
Jika Anda menggunakan anjing penjaga dalam kombinasi dengan tugas yang berjalan lama, Anda dapat melihat pengaruh dari berbagai metode.
Ini membunuh aplikasi Anda setelah 2 detik tanpa menampilkan dialog PPA atau sesuatu seperti itu. Jika Anda menghapus System.exit (0) , jalankan kode ini dan mulai ulang aplikasi setelah ditutup, Anda akan mengalami beberapa perilaku aneh, karena loop tak berujung masih berjalan.
sumber
Anda sebaiknya menggunakan
finish()
jika Anda berada diActivity
, ataugetActivity().finish()
jika Anda berada diFragment
.Jika Anda ingin keluar sepenuhnya dari aplikasi, maka gunakan:
sumber
Cara mudah dan sederhana untuk keluar dari aplikasi
sumber
Kami ingin kode yang kuat dan sederhana. Solusi ini berfungsi pada perangkat lama dan perangkat yang lebih baru.
sumber
Saya pikir apa yang Anda cari adalah ini
sumber
sumber
Mirip dengan @MobileMateo, tetapi di Kotlin
sumber
Saya tidak yakin apakah ini disukai atau tidak, tetapi ini adalah bagaimana saya melakukannya ...
Langkah 1 - Saya biasanya memiliki kelas yang berisi metode dan variabel yang ingin saya akses secara global. Dalam contoh ini saya akan menyebutnya kelas "App". Buat variabel Aktivitas statis di dalam kelas untuk setiap aktivitas yang dimiliki aplikasi Anda. Kemudian buat metode statis yang disebut "tutup" yang akan menjalankan
finish()
metode pada masing-masing variabel Aktivitas jika mereka TIDAK nol . Jika Anda memiliki aktivitas utama / orang tua, tutuplah yang terakhir:Langkah 2 - di setiap aktivitas Anda, timpa
onStart()
danonDestroy()
metode. DionStart()
, setel variabel statis di kelas Aplikasi Anda sama dengan "this
". DionDestroy()
, set sama dengannull
. Misalnya, di kelas "Activity1":Langkah 3 - Ketika Anda ingin menutup aplikasi Anda, cukup telepon
App.close()
dari mana saja. Semua kegiatan instantiated akan ditutup! Karena Anda hanya menutup kegiatan dan tidak mematikan aplikasi itu sendiri (seperti dalam contoh Anda), Android bebas untuk mengambil alih dari sana dan melakukan pembersihan yang diperlukan.Sekali lagi, saya tidak tahu apakah ini akan disukai karena alasan apa pun. Jika demikian, saya ingin membaca komentar tentang mengapa itu dan bagaimana hal itu dapat ditingkatkan!
sumber
api>=16
penggunaanfinishAffinity()
lain gunakan metode ini.Apakah berhenti dari aplikasi tidak disukai? . Pergi melalui tautan ini. Itu menjawab pertanyaan Anda. Sistem melakukan tugas membunuh aplikasi.
Misalkan Anda memiliki dua aktivitas A dan B. Anda menavigasi dari A ke B. Ketika Anda mengklik tombol kembali aktivitas Anda B muncul dari backstack dan dihancurkan. Aktivitas sebelumnya dalam aktivitas tumpukan belakang A mengambil fokus.
Anda harus menyerahkannya ke sistem untuk memutuskan kapan harus mematikan aplikasi.
kekosongan publik
finish()
Sebut ini ketika aktivitas Anda selesai dan harus ditutup.
Misalkan Anda memiliki banyak kegiatan. Anda dapat menggunakan bilah Tindakan. Pada klik ikon rumah naviagate ke MainActivity aplikasi Anda. Di MainActivity klik tombol kembali untuk keluar dari aplikasi.
sumber
Untuk keluar dari aplikasi Anda, Anda dapat menggunakan yang berikut:
Juga untuk menghentikan layanan, panggil metode berikut:
sumber
Ini mungkin sangat terlambat dan juga sesuai dengan pedoman Anda tidak seharusnya menangani proses siklus hidup sendiri (seperti yang dilakukan os untuk Anda). Sarannya adalah Anda mendaftarkan penerima siaran di semua aktivitas Anda dengan "
finish()
" dionReceive()
& "kapan saja mereka mau", Anda dapat dengan mudah menyampaikan maksud yang menunjukkan bahwa semua kegiatan harus ditutup ..... Meskipun pastikan Anda melakukannya " batalkan pendaftaran "penerima dalamonDestroy()
metode Anda .sumber
Itu bukan keputusan yang baik, karena itu bertentangan dengan prinsip-prinsip pemrosesan aplikasi Android. Android tidak mematikan proses apa pun kecuali itu benar-benar tak terhindarkan. Ini membantu aplikasi memulai lebih cepat, karena selalu tersimpan di memori. Jadi Anda perlu alasan yang sangat khusus untuk mematikan proses aplikasi Anda.
sumber
Solusi yang benar dan tepat untuk keluar dari aplikasi pada klik tombol menggunakan kode di bawah ini:
// Pada Tombol Kembali acara ditekan
sumber
Jika Anda menggunakan Kotlin, cara yang tepat untuk keluar dari aplikasi dan alternatifnya
System.exit()
adalah metode bawaanLihat dokumentasi .
Angka
0
sebagai parameter berarti jalan keluar dimaksudkan dan tidak ada kesalahan terjadi.sumber
Ini akan membunuh apa pun;)
sumber
Coba ini
sumber
Cara termudah yang saya temukan untuk keluar dari suatu aplikasi dari suatu aktivitas, tanpa melanggar logika Android dan tanpa menambahkan lebih banyak kode dalam aktivitas yang ada dan memberikan tambahan adalah sebagai berikut:
yang
QuitApplicationActivity
makhluk:sumber
Jawaban @Sivi menutup aplikasi. Tetapi pada gilirannya, jika Anda memiliki beberapa kegiatan anak, kegiatan lain yang belum selesai mungkin dibuka. Saya menambahkan
noHistory:true
ke aktivitas saya sehingga aplikasi kembali dimulai dari MainActivity.sumber
Hanya dengan menambahkan satu ke daftar metode brutal untuk mengakhiri suatu Aplikasi:
Process.sendSignal(Process.myPid(), Process.SIGNAL_KILL);
sumber
Process.killProcess(Process.myPid())
melakukan hal yang sama, tetapi lebih pendekAnda dapat menghentikan aplikasi lengkap Anda. jadi
ini akan bekerja 100%. Semoga berhasil!
sumber
Cukup gunakan finish () pada tombol kembali tekan onKeypressed ()
sumber