在 finish() 之后,发布到活动处理程序的 Runnables 会继续执行多长时间?



我有一个链接到UI线程的Handler。正如预期的那样,我可以post() Runnable s到它,并让它们在UI线程上执行。我也有一个按钮,按下时将调用Activity上的finish()

finish()如何影响UI处理程序的消息队列?它会处理队列中的所有消息,但不接受更多消息吗?它会直接拒绝运行任何东西并立即终止(我有理由相信这不是真的)。它会继续允许Runnable s被发布到它,直到onDestroy()被调用吗?您应该假设活动堆栈只包含一个活动。

你可以通过任何HandlerRunnable发送到UI线程,而你的应用程序仍然活着,它们将被执行。finish()刚刚完成您的活动。你的UI线程不关心这个

但是如果你完成了你的可见活动,Android可以杀死你的应用程序,在那一刻,你所有的数据/可运行/线程将被清除。

所以完成activity会导致UI线程停止(终止),但通常Android会让你的应用工作一段时间,即使你没有可见的activity或正在运行的服务。如果你的应用资源不足,Android会立即关闭它。

最新更新