Saya menggunakan handler.postDelayed()
untuk membuat masa tunggu sebelum tahap selanjutnya dari aplikasi saya berlangsung. Selama masa tunggu saya menampilkan dialog dengan progress bar dan tombol batal .
Masalah saya adalah saya tidak dapat menemukan cara untuk membatalkan tugas postDelay sebelum waktu berlalu.
Jawaban:
Saya melakukan ini untuk mengirim runnable yang tertunda:
Dan ini untuk menghapusnya:
myHandler.removeCallbacks(myRunnable);
sumber
Jika Anda memiliki beberapa runnables internal / anonim yang diteruskan ke handler yang sama, dan Anda ingin membatalkan semua penggunaan acara yang sama
handler.removeCallbacksAndMessages(null);
sumber
removeCallbacks(callback)
untuk menghapus callback tertentuCara lain adalah dengan menangani Runnable itu sendiri:
sumber
r
dalam hal ini) yang berarti saya dapat menggunakanmyHandler.removeCallbacks(r);
. Jika Runnable anonim maka flag akan menjadi anggota di kelas terlampir, yang berarti saya perlu referensi ke objek itu untuk mengubah flag, yang berarti saya lagi harus memilikir
anyways, yang berarti saya bisa melakukannyamyHandler.removeCallbacks(r);
. Dan jika saya lakukanmyHandler.removeCallbacks(r);
maka bendera seperti itu tidak perlu sama sekali. Apakah saya melewatkan sesuatu?Ini adalah kelas yang menyediakan metode pembatalan untuk tindakan yang tertunda
sumber
Ini bekerja untuk saya ketika saya menelepon CancelCallBacks (ini) di dalam post tertunda runnable dengan menyerahkannya melalui boolean
sumber
Semoga bantuan inti ini https://gist.github.com/imammubin/a587192982ff8db221da14d094df6fb4
MainActivity sebagai Peluncur Layar dengan fungsi handler & runnable, Runnable lari ke halaman masuk atau halaman umpan dengan pengguna login preferensi dasar dengan firebase.
sumber