Bagaimana cara menampilkan jam dan tanggal pada xml dengan menggunakan kotlin? Hal itu tentu mudah dilakukan jika hanya sekedar menampilkan tanpa harus menjalankan secara foreground, namun bagaimana jika ingin benar – benar melakukan aktivitas jam seperti pada umumnya?
Pada footer itu, kita diharuskan menampilkan jam yang selalu berjalan sehingga menunjukan waktu dengan tepat. Disini kalian bisa menggunakan JOB jangan HANDLER ya karena itu sudah DEPRECATED.
Pertama, siapkan code untuk menampilkan time dan date
private fun updateTimeAndDate() {
val currentTime = Calendar.getInstance().time
val timeFormat = SimpleDateFormat("hh:mm", Locale.getDefault())
val dateFormat = SimpleDateFormat("EEE, dd MMMM yyyy", Locale.getDefault())
val formattedTime = timeFormat.format(currentTime)
val formattedDate = dateFormat.format(currentTime)
binding.tvTime.text = formattedTime
binding.tvDate.text = formattedDate
}
Disini kamu sudah bisa menampilkan date dan time dengan format yang sesuai, namun ini belum bisa berubah seperti prilaku time. Untuk itu kamu harus membuat job seperti ini :
private lateinit var clockJob: Job
private fun startClock() {
clockJob = CoroutineScope(Dispatchers.Main).launch {
while (isActive) {
updateTimeAndDate()
delay(1000)
}
}
}
Terlihat bagus ya, fungsi startClock tinggal kamu panggil di oncreate karena semuanya sudah siap. Namun untuk jaga-jaga kamu bisa buat fungsi untuk menghentikan job misalnya ketika activity di destroy
private fun stopClock() {
clockJob.cancel()
}
override fun onDestroy() {
super.onDestroy()
stopClock()
}
Sekarang, kamu bisa menguji code tersebut.
Selamat mencoba dan semoga bermanfaat