Cara Java standar untuk menggunakan timer melalui java.util.Timer dan java.util.TimerTask berfungsi dengan baik di Android, tetapi Anda harus menyadari bahwa metode ini membuat utas baru.
Anda dapat mempertimbangkan untuk menggunakan kelas Handler yang sangat nyaman (android.os.Handler) dan mengirim pesan ke handler melalui sendMessageAtTime(android.os.Message, long)
atau sendMessageDelayed(android.os.Message, long)
. Setelah Anda menerima pesan, Anda dapat menjalankan tugas yang diinginkan. Opsi kedua adalah membuat objek Runnable dan menjadwalkannya melalui fungsi Handler postAtTime(java.lang.Runnable, long)
atau postDelayed(java.lang.Runnable, long)
.
ya timer java dapat digunakan , tetapi sebagai pertanyaan meminta cara yang lebih baik (untuk ponsel). Yang dijelaskan di Sini .
Demi StackOverflow:
Karena Timer membuat utas baru, itu mungkin dianggap berat,
jika yang Anda butuhkan adalah mendapatkan panggilan kembali saat aktivitas berjalan, Handler dapat digunakan bersama dengan a
Runnable :
atau Pesan
di samping catatan pendekatan ini dapat digunakan, jika Anda ingin menjalankan sepotong kode di utas UI dari utas lain.
jika Anda perlu mendapatkan panggilan kembali bahkan jika aktivitas Anda tidak berjalan, Anda dapat menggunakan AlarmManager
sumber
Seperti yang saya lihat, java.util.Timer adalah yang paling banyak digunakan untuk mengimplementasikan timer.
Untuk tugas yang berulang:
Untuk satu kali tugas:
tugas menjadi metode yang akan dieksekusi
setelah waktu untuk eksekusi awal
( interval waktu untuk mengulangi eksekusi)
sumber
task
mungkin turunan dari kelas Anda yang mewarisi dari java.util.TimerTask dan menimpavoid run()
.Saya harap yang satu ini bermanfaat dan mungkin membutuhkan sedikit upaya untuk mengimplementasikan, kelas Android CountDownTimer
misalnya
sumber
Mungkin
Timerconcept
atau
Metode 2 ::
Program timer
Tambahkan variabel baru waktu bernama int. Atur ke 0. Tambahkan kode berikut ke fungsi onCreate di MainActivity.java.
Pergilah ke metode jalankan dan tambahkan kode berikut.
sumber
Itu situasional.
Dokumentasi Android menyarankan bahwa Anda harus menggunakan AlarmManager untuk mendaftarkan Intent yang akan diaktifkan pada waktu yang ditentukan jika aplikasi Anda mungkin tidak berjalan.
Jika tidak, Anda harus menggunakan Handler.
sumber
Kelas 1 kami
Kelas 2 kami
sumber
Saya seorang pemula Android tetapi ini adalah kelas timer yang saya buat berdasarkan jawaban di atas. Ini berfungsi untuk aplikasi saya, tetapi saya menerima saran.
Contoh penggunaan:
sumber
Saya menggunakan handler dan runnable untuk membuat timer. Saya membungkus ini dalam kelas abstrak. Turunkan / implementasikan saja dan Anda bisa melakukannya:
Perhatikan bahwa
handler.postDelayed
kode dipanggil sebelum kode dieksekusi - ini akan membuat timer lebih tertutup waktunya seperti "yang diharapkan". Namun dalam kasus itu timer sering berjalan dan tugas (onTimer()
) panjang - mungkin ada tumpang tindih. Jika Anda ingin mulai menghitungintervalMS
setelah tugas selesai, pindahkanonTimer()
panggilan ke baris di atas.sumber
Saya percaya cara untuk melakukan ini di android adalah bahwa Anda memerlukan layanan latar belakang untuk dapat berjalan. Di aplikasi latar belakang itu, buat pengatur waktu. Ketika penghitung waktu "berdetak" (mengatur interval berapa lama Anda ingin menunggu), luncurkan aktivitas yang ingin Anda mulai.
http://developer.android.com/guide/topics/fundamentals.html (<- artikel ini menjelaskan hubungan antara kegiatan, layanan, maksud, dan dasar-dasar inti lainnya dari pengembangan Android)
sumber
Saya biasa menggunakan (
Timer
,TimerTask
) dan jugaHandler
untuk memulai (memakan waktu) tugas secara berkala. Sekarang saya sudah beralih keseluruhan ke RxJava. RxJava menyediakanObservable.timer
mana yang lebih sederhana, tidak rawan kesalahan, tidak mudah digunakan.sumber
Untuk operasi pengaturan waktu Anda harus menggunakan Handler .
Jika Anda perlu menjalankan layanan latar belakang, AlarmManager adalah caranya.
sumber
contoh ini memulai timer unitl hancur di Kotlin
Batalkan timertask di onDestroy ()
sumber