Katakanlah saya ingin melakukan beberapa tindakan setiap 10 detik dan tidak perlu memperbarui tampilan.
Pertanyaannya adalah: apakah lebih baik (maksud saya lebih efisien dan efektif) menggunakan timer dengan timertask seperti di sini:
final Handler handler = new Handler();
TimerTask timertask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
<some task>
}
});
}
};
timer = new Timer();
timer.schedule(timertask, 0, 15000);
}
atau hanya pawang dengan penundaan pasca
final Handler handler = new Handler();
final Runnable r = new Runnable()
{
public void run()
{
<some task>
}
};
handler.postDelayed(r, 15000);
Saya juga akan berterima kasih jika Anda dapat menjelaskan kapan harus menggunakan pendekatan mana dan mengapa salah satunya lebih efisien daripada yang lain (jika sebenarnya demikian).
Jawaban:
Handler
lebih baik dariTimerTask
.Java
TimerTask
dan AndroidHandler
memungkinkan Anda menjadwalkan tugas yang tertunda dan berulang pada thread latar belakang. Namun, literatur sangat merekomendasikan menggunakanHandler
lebihTimerTask
di Android (lihat di sini , di sini , di sini , di sini , di sini , dan di sini ).Beberapa masalah yang dilaporkan dengan TimerTask meliputi:
Contoh
Sumber terbaik untuk semua jenis contoh Android yang pernah saya lihat ada di Codepath . Berikut adalah
Handler
contoh dari sana untuk tugas yang berulang.Terkait
sumber
mHandler.removeCallbacks(runnableCode)
pada waktu yang tepat (misalnyaonStop()
untuk suatu kegiatan).Disalin dari:
TimerTask vs Thread.sleep vs Handler postDelayed - paling akurat untuk memanggil fungsi setiap N milidetik?
sumber
Versi Kotlin dari jawaban yang diterima:
sumber