Como título, ¿hay alguna forma de llamar a una función después del retraso (1 segundo, por ejemplo) Kotlin?
154
Puedes usar Schedule
inline fun Timer.schedule(
delay: Long,
crossinline action: TimerTask.() -> Unit
): TimerTask (source)
ejemplo (gracias @Nguyen Minh Binh - lo encontré aquí: 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, porque Kotlin simplemente se quejó de una falta de coincidencia de firma, pero luego me di cuenta de que estaba tratando de pasar un Int en lugar de un Long. Se compiló después de corregir eso.También hay una opción para usar
Handler -> postDelayedfuente
Muchas maneras
1. Usando la
Handlerclase2. Usando la
TimerclaseCorta
Mas corto
3. Usando la
Executorsclasefuente
Debe importar las siguientes dos bibliotecas:
y después de eso úsalo de esta manera:
fuente
Podrías
launchuna corutina,delayy luego llamar a la función:Si está fuera de una clase o un objeto,
GlobalScopehaga que la corutina se ejecute allí; de lo contrario, se recomienda implementarlaCoroutineScopeen la clase circundante, lo que permite cancelar todas las corutinas asociadas a ese alcance si es necesario.fuente
fuente
Timer.schedule()espera unTimerTaskcomo su primer argumento.kotlin.concurrent.timerTask()envuelve el lambda dado en unaTimerTaskinstancia. Ver aquí: kotlinlang.org/api/latest/jvm/stdlib/kotlin.concurrent/…Timerobjeto no se va a utilizar más de una vez, por ejemplo,Timer().schedule(timerTask { ... }, 3000). También está disponible una opción más amigable para Kotlin; ver la respuesta de jonguer.Un ejemplo simple para mostrar un brindis después de 3 segundos :
fuente
Si está buscando un uso genérico, aquí está mi sugerencia:
Crea una clase llamada como
Run:Y use así:
fuente
Run.after(1000) { toRun() }. ¿Estoy en lo cierto?Le recomendé usar SingleThread porque no tiene que matarlo después de usarlo. Además, el método " stop ()" está en desuso en el lenguaje Kotlin.
Además, puede usarlo para trabajos periódicos. Es muy útil. Si desea hacer un trabajo por cada segundo, puede configurarlo porque los parámetros de la misma:
Los valores de TimeUnit son: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS.
@canerkaseler
fuente