绕过onDestroy()时是否将删除处理程序回调?

问题描述 投票:0回答:1

我在我的应用程序中有一种特殊的行为,即使该应用程序关闭/被杀死,该处理程序仍会继续运行。我使用了以下内容:

fun xyz() {
    Handler().postDelayed({
        // do stuff
        xyz()
    }, 3000)
}

[从互联网上,我了解到有一个处理程序更好(而不是每次都创建一个新的处理程序),并且您必须调用handler.removeCallbacksAndMessages(null)来清理所有递归回调。活动被销毁后,我正在使用以下代码来清理我的处理程序。

override fun onDestroy() {
    super.onDestroy()
    handler.removeCallbacksAndMessages(null)
}

在Android的Documentation中,它表示:

[在某些情况下,系统将简单地杀死活动的托管过程而没有在其中调用此方法(或任何其他方法),因此不应将其用于处理该过程消失后仍然存在的事情。

如果系统在不调用onDestroy()的情况下终止了我的活动的托管进程,则处理程序将继续在后台运行吗?

android kotlin callback
1个回答
0
投票

当您呼叫postDelayed时,会将Runnable放到MessageQueueMainThread中。正如文档所说的kill the activity's hosting processprocess kill意味着所有内部线程都将被杀死,因此您的Handler也将被杀死,而无需调用onDestroyActivity

© www.soinside.com 2019 - 2024. All rights reserved.