2016-08-05 117 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