2016-08-05 115 views
0

当一个活动进入暂停状态时,当它被另一个活动部分覆盖时可能发生,到底是什么进入暂停状态?更确切地说:当android活动进入暂停状态时,真的暂停了什么?

  1. 它是否暂停Looper处理传入任务或消息,但仍允许在Looper消息队列中提交作业?
  2. 如果一个活动有一个messenger,它接收消息,假设一个服务,messenger队列也暂停处理任务,但它仍然可以接收消息?几乎像上面的案例没有。 1.
  3. 如果情况1或2或(1和2)有效,那么我不需要照顾用于暂停状态的UI任务缓冲区(如在How to handle Handler messages when activity/fragment is paused中所建议的那样),因为一旦活动恢复,它就会开始处理消息队列并且不会丢失任何东西。在这个假设中,我是对的吗?

我觉得这是应该如何实施,但不知道是否是这种情况。

回答

0

in Simple Words .... 当活动可见但未聚焦时,活动处于暂停状态。 它在背景中。

+0

感谢您的回复,但我看起来比这更多。我们知道它处于暂停状态,但是我的问题是从过程运行的角度来看,暂停状态是什么意思? – Vivek

0

通常,Activity被暂停意味着其UI元素不是最前面的。 UI线程仍然工作。这意味着Looper仍然可以处理消息。你提到的信使仍然可以工作。

尽管UI元素可能不可见,但您仍然可以在后台更改其状态。例如,更改TextView的文本。一旦Activity再次恢复,您可以看到此类更改。

+0

所以就是说,即使活动进入暂停状态后,所有任务仍由Looper/Messenger执行,但只是有条件地跳过渲染(暂停的一种),休息都是一样的。 – Vivek

+0

然后当活动停止时会发生什么情况。停止是什么意思?在这种情况下,Looper是否停止(/阻止提交任务)?因为在onStop()之后,当Activity到达时,它会经历onRestart() - > onStart() - > onResume(),在这种情况下,它必须比从Paused状态恢复时做得更多。 – Vivek

+0

在我看来,停止的状态与UI更相关,例如UI元素不可见。操作系统停止一个“活动”,以便用户可以与其他“活动”交互。 – shhp