在finish()之后多长时间将Runnables发布到Activity的Handler继续执行?

时间:2013-03-11 12:55:51

标签: android android-activity android-handler

我有一个Handler链接到UI线程。正如所料,我可以post() Runnable到它并让它们在UI线程上执行。我还有一个按钮,按下该按钮将调用finish()上的Activity

finish()如何影响UI处理程序的消息队列?它会处理队列中的所有消息但不再接受吗?它会直言不讳地拒绝运行并立即终止(我有理由相信这不是真的)。是否会继续允许Runnable张贴到onDestroy(),直到调用{{1}}为止?您应该假设活动堆栈只包含一个活动。

1 个答案:

答案 0 :(得分:5)

当您的应用仍处于活动状态时,您可以通过任何RunnableHandler发布到UI线程,然后执行它们。 finish()刚刚完成您的活动。您的UI线程并不关心这一点。

但是如果你完成了可见的活动,Android可以杀死你的应用程序,那时你的所有数据/ runnables / threads都将被清除掉。

因此,完成活动可以导致停止(终止)UI线程,但通常Android会使您的应用程序保持一段时间,即使您没有可见的活动或正在运行的服务。如果资源缺乏资源,Android会立即终止您的应用。