Dengan menekan tombol kembali, saya ingin aplikasi saya masuk ke keadaan berhenti, bukan ke keadaan hancur.
Dalam dokumen Android disebutkan:
... tidak semua aktivitas memiliki perilaku yang dihancurkan ketika KEMBALI ditekan. Ketika pengguna mulai memutar musik di aplikasi Musik dan kemudian menekan KEMBALI, aplikasi menimpa perilaku punggung normal, mencegah aktivitas pemain dari dihancurkan, dan terus memutar musik, meskipun aktivitasnya tidak lagi terlihat
Bagaimana cara mereplikasi fungsi ini di aplikasi saya sendiri?
Saya pikir pasti ada tiga kemungkinan ...
Menangkap tombol kembali, tekan (seperti di bawah) dan kemudian panggil metode apa pun yang tombol rumah panggil.
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { Log.d(this.getClass().getName(), "back button pressed"); } return super.onKeyDown(keyCode, event); }
Menangkap tombol kembali, tekan lalu spoof tombol home tekan.
Menangkap tombol kembali, tekan, lalu mulailah sebuah Aktivitas di layar beranda, secara efektif menempatkan Aktivitas aplikasi saya ke dalam keadaan terhenti.
Sunting: Saya tahu tentang layanan dan saya menggunakan satu di aplikasi yang terkait masalah ini. Pertanyaan ini secara khusus tentang menempatkan Aktivitas ke keadaan berhenti daripada keadaan hancur dengan menekan tombol kembali.
Jawaban:
Sebagian besar waktu Anda perlu membuat Layanan untuk melakukan sesuatu di latar belakang, dan Anda yang terlihat
Activity
hanya mengendalikan iniService
. (Saya yakin Pemutar musik bekerja dengan cara yang sama, jadi contoh dalam dokumen tampaknya agak menyesatkan.) Jika itu yang terjadi, makaActivity
kaleng Andafinish
seperti biasa danService
masih akan berjalan.Pendekatan yang lebih sederhana adalah dengan menangkap
Back
tombol, tekan dan panggil moveTaskToBack (true) sebagai berikut:Saya pikir opsi yang lebih disukai seharusnya untuk Kegiatan selesai secara normal dan dapat membuat ulang sendiri misalnya membaca keadaan saat ini dari Layanan jika diperlukan. Tetapi
moveTaskToBack
bisa digunakan sebagai alternatif cepat pada kesempatan tertentu.CATATAN : seperti yang ditunjukkan oleh Dave di bawah Android 2.0 memperkenalkan
onBackPressed
metode baru , dan rekomendasi ini tentang cara menangani tombol Kembali.sumber
Gunakan kode berikut:
sumber
Jika Anda ingin menangkap Tombol Kembali lihat posting ini di Blog Pengembang Android . Ini mencakup cara yang lebih mudah untuk melakukan ini di Android 2.0 dan cara terbaik untuk melakukan ini untuk aplikasi yang berjalan pada 1.x dan 2.0.
Namun, jika Aktivitas Anda Dihentikan, masih dapat dimatikan tergantung pada ketersediaan memori pada perangkat. Jika Anda ingin proses dijalankan tanpa UI, Anda harus membuat a
Service
. Dokumentasi mengatakan yang berikut tentang Layanan:Ini tampaknya sesuai untuk kebutuhan Anda.
sumber
mencoba untuk menimpa kekosongan yang
onBackPressed()
didefinisikan dalam kelas android.app.Activity.sumber
jika itu membantu orang lain, saya memiliki aktivitas dengan 2 tata letak yang saya matikan dan matikan agar terlihat, mencoba meniru semacam struktur page1> page2. jika mereka ada di halaman 2 dan menekan tombol kembali saya ingin mereka kembali ke halaman 1, jika mereka menekan tombol kembali di halaman 1 itu masih akan berfungsi seperti biasa. Cukup mendasar tetapi berfungsi
Semoga ini bisa membantu seseorang, tepuk tangan
sumber
Contoh kerja ..
Pastikan jangan menelepon super.onBackPressed ();
Dengan cara ini Tombol Kembali Anda bertindak seperti tombol Beranda. Itu tidak menyelesaikan aktivitas Anda tetapi membawanya ke latar belakang
Cara kedua adalah dengan memanggil
moveTaskToBack(true);
dionBackPressed
dan pastikan untuk menghapussuper.onBackPressed
sumber
Lebih baik lagi, bagaimana dengan OnPause () :
Disebut sebagai bagian dari siklus hidup aktivitas ketika suatu aktivitas berjalan ke latar belakang, tetapi belum (belum) terbunuh. Mitra untuk onResume ().
Ketika aktivitas B diluncurkan di depan aktivitas A, panggilan balik ini akan dipanggil pada A. B tidak akan dibuat sampai A onPause () kembali, jadi pastikan untuk
enter code here
tidak melakukan apa pun yang panjang di sini.Callback ini sebagian besar digunakan untuk menyimpan keadaan persisten yang sedang diedit dan memastikan tidak ada yang hilang jika tidak ada sumber daya yang cukup untuk memulai aktivitas baru tanpa terlebih dahulu membunuh yang ini.
Ini juga merupakan tempat yang baik untuk melakukan hal-hal seperti menghentikan animasi dan hal-hal lain yang mengonsumsi CPU dalam jumlah yang cukup besar agar dapat beralih ke aktivitas berikutnya secepat mungkin, atau untuk menutup sumber daya yang merupakan akses eksklusif seperti kamera.
sumber
Override onBackPressed () setelah android 2.0. Seperti
sumber
Saya sudah mencoba semua solusi di atas, tetapi tidak ada satupun yang bekerja untuk saya. Kode berikut membantu saya, ketika mencoba kembali ke MainActivity dengan cara yang dipanggil onCreate:
Intent.FLAG_ACTIVITY_CLEAR_TOP adalah kuncinya.
sumber
Saya telah menggunakan @Mirko N. answerser dengan membuat CustomText Edit baru
Kemudian atur data dari aktivitas Anda
Terima kasih.
sumber