Saya ingin tahu apakah pengguna akan kembali ke layar beranda jika dia keluar dari aktivitas saat ini.
android
android-activity
lifecycle
virsir
sumber
sumber
Jawaban:
UPDATE (Jul 2015):
Sejak getRunningTasks () mendapatkan usang, dari API 21 itu lebih baik untuk mengikuti raukodraug jawaban atau Ed Burnette satu (saya lebih suka satu detik).
Ada kemungkinan untuk memeriksa tugas saat ini dan tumpukannya menggunakan ActivityManager .
Jadi, untuk menentukan apakah suatu aktivitas adalah yang terakhir:
Gunakan kode berikut:
Harap dicatat, kode di atas hanya akan berlaku jika Anda memiliki tugas tunggal. Jika ada kemungkinan sejumlah tugas akan ada untuk aplikasi Anda - Anda harus memeriksa elemen daftar tugas lainnya . Baca lebih lanjut tentang tugas Tasks dan Back Stack
sumber
isTaskRoot()
metode ini.Saya akan memposting komentar @ H9kDroid sebagai jawaban terbaik di sini untuk orang-orang yang memiliki pertanyaan serupa.
Anda bisa menggunakan isTaskRoot () untuk mengetahui apakah aktivitas adalah root tugas.
saya harap ini membantu
sumber
if (isTaskRoot()) { // do something }
Semoga ini bisa membantu pemula baru, Berdasarkan jawaban di atas yang berfungsi dengan baik bagi saya, saya juga membagikan cuplikan kode sehingga akan mudah diterapkan.
solusi: saya menggunakan
isTaskRoot()
yang mengembalikan true jika aktivitas saat ini hanya aktivitas di tumpukan Anda dan selain saya juga menangani kasus di mana jika saya memiliki beberapa aktivitas di tumpukan pergi ke aktivitas terakhir dalam tumpukan alih-alih membuka yang baru kustom.Dalam aktivitas Anda
sumber
ada solusi termudah untuk ini, Anda bisa menggunakan isTaskRoot () dalam aktivitas Anda
sumber
Meskipun mungkin ada cara untuk mencapai ini (lihat jawaban lain), saya menyarankan agar Anda tidak melakukan itu. Aplikasi Android normal tidak perlu mengetahui apakah layar Utama akan ditampilkan atau tidak.
Jika Anda mencoba untuk menyimpan data, masukkan kode penyimpanan data dalam metode onPause () Anda. Jika Anda mencoba memberi pengguna cara untuk mengubah pikirannya tentang aplikasi yang sudah ada, Anda bisa mencegat tombol atas / bawah untuk tombol Kembali dan metode onBackPressed () dan menampilkan "Apakah Anda yakin?" cepat.
sumber
Salah satu cara untuk melacaknya adalah dengan menyertakan penanda saat Anda memulai aktivitas baru dan memeriksa apakah penanda tersebut ada.
Setiap kali Anda memulai aktivitas baru, masukkan penanda:
Dan Anda kemudian dapat memeriksanya seperti ini:
sumber
Masalah dengan solusi sandrstar yang digunakan
ActivityManager
adalah: Anda memerlukan izin untuk mendapatkan tugas dengan cara ini. Saya menemukan cara yang lebih baik:Di
Activity
bagian bawah Stack selalu mendapatkan kategori ini secara default sementara Aktivitas lain tidak boleh mendapatkannya.Tetapi meskipun ini gagal pada beberapa perangkat, Anda dapat mengaturnya saat memulai
Activity
:sumber
Saya telah membuat kelas dasar untuk semua aktivitas saya, memperluas AppCompatActivity , dan yang memiliki penghitung statis:
Ini telah bekerja dengan cukup baik, sejauh ini; dan apa pun versi API-nya. Tentu saja diperlukan bahwa semua aktivitas memperluas kelas dasar ini - yang mereka lakukan, dalam kasus saya.
Edit: Saya perhatikan satu contoh ketika penghitung turun ke nol sebelum aplikasi benar-benar keluar, yaitu ketika orientasi diubah dan hanya satu aktivitas yang terbuka. Ketika orientasi berubah, aktivitas ditutup dan yang lain dibuat, sehingga
onDestroyed
dipanggil untuk aktivitas terakhir, dan kemudianonCreate
dipanggil saat aktivitas yang sama dibuat dengan orientasi yang diubah. Perilaku ini harus diperhitungkan; OrientationEventListener mungkin dapat digunakan.sumber
Android mengimplementasikan tumpukan Aktivitas, saya sarankan Anda membacanya di sini . Sepertinya semua yang ingin Anda lakukan meskipun adalah mengambil aktivitas panggilan:
getCallingActivity()
. Jika aktivitas saat ini adalah aktivitas pertama dalam aplikasi Anda dan aplikasi diluncurkan dari layar beranda, ini harus (saya asumsikan) kembalinull
.sumber
Satu hal yang terlewat di sini, adalah klik "Tombol Beranda", ketika diaktifkan, Anda tidak dapat mendeteksi ini dari aktivitas Anda, jadi akan lebih baik untuk mengontrol tumpukan aktivitas secara terprogram dengan menangani penekanan "Tombol kembali" dan berpindah ke aktivitas yang diperlukan atau hanya melakukan langkah-langkah yang diperlukan.
Selain itu, Anda tidak bisa memastikan, bahwa memulai aktivitas Anda dari daftar "Aktivitas Terkini" bisa dideteksi dengan menyetel beberapa data tambahan ke dalam maksud untuk membuka aktivitas, karena digunakan kembali dalam kasus tersebut.
sumber