我有一个Handler
链接到UI线程。正如所料,我可以post()
Runnable
到它并让它们在UI线程上执行。我还有一个按钮,按下该按钮将调用finish()
上的Activity
。
finish()
如何影响UI处理程序的消息队列?它会处理队列中的所有消息但不再接受吗?它会直言不讳地拒绝运行并立即终止(我有理由相信这不是真的)。是否会继续允许Runnable
张贴到onDestroy()
,直到调用{{1}}为止?您应该假设活动堆栈只包含一个活动。
答案 0 :(得分:5)
当您的应用仍处于活动状态时,您可以通过任何Runnable
将Handler
发布到UI线程,然后执行它们。 finish()
刚刚完成您的活动。您的UI线程并不关心这一点。
但是如果你完成了可见的活动,Android可以杀死你的应用程序,那时你的所有数据/ runnables / threads都将被清除掉。
因此,完成活动可以导致停止(终止)UI线程,但通常Android会使您的应用程序保持一段时间,即使您没有可见的活动或正在运行的服务。如果资源缺乏资源,Android会立即终止您的应用。