Sebagai judul, apakah ada cara untuk memanggil fungsi setelah penundaan (misalnya 1 detik) Kotlin
?
154
Anda dapat menggunakan Jadwal
inline fun Timer.schedule(
delay: Long,
crossinline action: TimerTask.() -> Unit
): TimerTask (source)
contoh (terima kasih @Nguyen Minh Binh - temukan di sini: http://jamie.mccrindle.org/2013/02/exploring-kotlin-standard-library-part-3.html )
import java.util.Timer
import kotlin.concurrent.schedule
Timer("SettingUp", false).schedule(500) {
doSomething()
}
Timer("SettingUp", false).schedule(500) { doSomething() }
kotlin.concurrent.schedule
, karena Kotlin hanya mengeluhkan ketidakcocokan tanda tangan, tetapi kemudian saya menyadari bahwa saya mencoba untuk lulus Int bukan panjang. Itu dikompilasi setelah mengoreksi itu.Ada juga opsi untuk digunakan
Handler -> postDelayed
sumber
Banyak jalan
1. Menggunakan
Handler
kelas2. Menggunakan
Timer
kelasSingkat
Terpendek
3. Menggunakan
Executors
kelassumber
Anda harus mengimpor dua perpustakaan berikut:
dan setelah itu gunakan cara ini:
sumber
Anda bisa
launch
menggunakan coroutine,delay
lalu memanggil fungsinya:Jika Anda berada di luar kelas atau objek yang bergantung
GlobalScope
untuk membiarkan coroutine berjalan di sana, jika tidak disarankan untuk mengimplementasikannyaCoroutineScope
di kelas sekitarnya, yang memungkinkan untuk membatalkan semua coroutine yang terkait dengan cakupan itu jika perlu.sumber
sumber
Timer.schedule()
mengharapkanTimerTask
argumen pertama.kotlin.concurrent.timerTask()
membungkus lambda yang diberikan dalamTimerTask
contoh. Lihat di sini: kotlinlang.org/api/latest/jvm/stdlib/kotlin.concurrent/…Timer
objek tidak akan digunakan lebih dari sekali, misalnyaTimer().schedule(timerTask { ... }, 3000)
,. Pilihan yang lebih ramah untuk Kotlin juga tersedia; lihat jawaban jonguer.Contoh sederhana untuk bersulang setelah 3 detik :
sumber
Jika Anda mencari penggunaan umum, berikut adalah saran saya:
Buat kelas dengan nama
Run
:Dan gunakan seperti ini:
sumber
Run.after(1000) { toRun() }
. Apakah saya benarSaya merekomendasikan menggunakan SingleThread karena Anda tidak perlu membunuhnya setelah menggunakan. Juga, metode " stop ()" tidak digunakan lagi dalam bahasa Kotlin.
Selain itu, Anda dapat menggunakannya untuk pekerjaan berkala. Itu sangat berguna. Jika Anda ingin melakukan pekerjaan untuk setiap detik, Anda dapat mengatur karena parameternya:
Nilai TimeUnit adalah: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS.
@canerkaseler
sumber