[英]How can I use onRestart() to unpause/restart a thread in an Android Activity?
[英]Clarification Android Activity onPause and onRestart
我對Android中的活動生命周期有疑問。 當我有這樣的代碼時(使用正確的名稱)
newActivityButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), NextActivity.class);
intent.putExtra("Info",correctInfo);
startActivity(intent);
}
});
然后,“ NextActivity”進入前台。 但這是否意味着“ MainActivity”已停止? 根據下圖,“ MainActivity”不再可見,因此也停止了嗎?
編輯:如果我有3個活動鏈,該怎么辦。 第一個仍然沒有銷毀嗎?
僅當您使用finish()
或相關方法隱式完成活動時,或者如果出於某種必要原因(大多數情況下,與設備的內存不足相關的活動),活動將被銷毀,而系統在后台將其殺死。 如果之前的任何事件均未發生,則在后台進行的活動將達到其生命周期的onStop()
狀態,直到再次回到前台為止,如圖所示。
因此,如果您遇到以下問題,請回答您的問題:
A-> B-> C如果您不對它們中的任何一個進行調用,並且系統沒有終止任何后台活動,則A和B都將停止,但不會被破壞。
當MainActivity變得不可見並且另一個活動進入前台時,它將立即停止。 如果一系列活動接連啟動,則所有活動都將處於停止狀態(除非系統銷毀該活動以釋放內存和資源)。
在android中,活動或任務(活動的集合)以堆棧的形式排列,稱為“后堆棧”。
當當前活動啟動一個新活動時,新活動將被推到堆棧的頂部並獲得焦點。 先前的活動也保留在堆棧中,但是它處於停止狀態,而系統保留了其用戶界面的狀態,因此可以恢復它。 同樣,如果此新活動再次創建另一個活動,則新創建的活動將到達堆棧頂部,而當前活動將變為停止狀態。
按下后退按鈕后,最上面的活動將完成並從堆棧中彈出,並且堆棧中的下一個活動將以已保存的實例狀態繼續進行,因此感覺就像恢復了它的原處。
對於一個鏈,假設您有三個活動,A,B和C。A啟動B,B啟動C。因此,當C處於焦點位置時,您的A和B活動將處於停止狀態(但仍處於后退狀態)。 您可以在C上按后退並繼續B,然后在B上按后退並繼續A。如上所述,一旦按下后退,當前活動將從堆棧中彈出並完成。
通過我在頂部共享的同一網址:
注意:可以一次在后台執行多個任務。 但是,如果用戶同時運行許多后台任務,則系統可能會開始破壞后台活動以恢復內存,從而導致活動狀態丟失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.