我有一个链接到UI线程的Handler
。正如预期的那样,我可以post()
Runnable
s到它,并让它们在UI线程上执行。我也有一个按钮,按下时将调用Activity
上的finish()
。
finish()
如何影响UI处理程序的消息队列?它会处理队列中的所有消息,但不接受更多消息吗?它会直接拒绝运行任何东西并立即终止(我有理由相信这不是真的)。它会继续允许Runnable
s被发布到它,直到onDestroy()
被调用吗?您应该假设活动堆栈只包含一个活动。
你可以通过任何Handler
将Runnable
发送到UI线程,而你的应用程序仍然活着,它们将被执行。finish()
刚刚完成您的活动。你的UI线程不关心这个
但是如果你完成了你的可见活动,Android可以杀死你的应用程序,在那一刻,你所有的数据/可运行/线程将被清除。
所以完成activity会导致UI线程停止(终止),但通常Android会让你的应用工作一段时间,即使你没有可见的activity或正在运行的服务。如果你的应用资源不足,Android会立即关闭它。