如何在 Android 中创建生命周期感知处理程序?

Kis*_*nki 6 android android-lifecycle kotlin android-handler

首先,我知道如何创建Handler。

我正在开发一个项目,我正在Handler使用postDelayed. 有时,应用程序崩溃是因为Activity 被销毁并且处理程序内的任务在 Activity destroy 后执行

我正在寻找 Handler 的替代方案,它可以在延迟后执行,并且它可以是生命周期感知的,这样应用程序就不会崩溃。

我知道如何取消处理程序(删除处理程序或取消活动的 onDestroy/onStop 方法内的处理程序),这里是相同的链接。但我并不是在寻找这些解决方案。如果可以的话,任何替代方案都将是更好的解决方案。

提前致谢!

raj*_* ks 1

如果您熟悉并且可以使用coroutines,您可以替换Handlers以实现相同的功能

使用以下与协程的依赖关系,您可以使协程感知生命周期

implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
Run Code Online (Sandbox Code Playgroud)

然后在活动中

lifeCycleScope.launchWhenStarted{
     delay(1000)

     //do your work after delay, runs on main thread 
     //by default, will be cancelled if life cycle is inactive
}
Run Code Online (Sandbox Code Playgroud)

有关使用协程的更多信息:Deep Dive into Coroutines + Android