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

Categorized in:

Tagged in:

,