Android應用的核心是Activity,它是用戶與應用程序交互的窗口。一個Activity可以簡單地理解為用戶與應用的一個窗口,因此,Android中的Activity生命周期管理也非常重要,它可以幫助我們更好地對Android應用程序進行開發和調試。
一、Activity 的基本生命周期
Activity的生命周期分為三個關鍵階段:創建(Create)、運行(Running)和破壞(Destroying)。
Create:當我們創建一個Activity並調用onCreate()方法時,系統會執行一些必要的初始化工作,例如:用setContentView()方法設置布局和其他必要的視圖對象。
Running:當Activity進入運行狀態時,它會接收到一個消息,告訴它它正在運行。當Activity暫停時,它會被暫停,並維持其狀態。在這個階段,Activity可以響應用戶輸入事件和其他外部事件,並且它可以相應地更新UI元素。
Destroying:當Activity被銷毀時,它將釋放所有的資源,並將其狀態保存到持久化存儲器中。此時,我們可以在onDestroy()方法中完成一些相關的清理工作,例如釋放數據庫連接和流對象等。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onStart() { super.onStart(); // the activity is about to become visible. } @Override protected void onResume() { super.onResume(); // the activity has become visible (it is now "resumed"). } @Override protected void onPause() { super.onPause(); // another activity is taking focus (this activity is about to be "paused"). } @Override protected void onStop() { super.onStop(); // the activity is no longer visible (it is now "stopped") } @Override protected void onDestroy() { super.onDestroy(); // the activity is about to be destroyed. } }
二、Activity 的返回棧和任務棧
Activity的返回棧和任務棧也是Activity生命周期的重要組成部分。
返回棧是Activity的一個重要概念,它是由後續打開的Activity組成的棧。當我們按下返回按鈕時,該棧會逐個彈出Activity,直到返回到主界面。
任務棧是由多個Activity形成的棧結構,每個Activity可以屬於一個任務,並被放入任務棧中。當用戶選中一個任務後,任務棧會將該任務的Activity彈出到最前面,使得用戶可以繼續使用該應用。
三、Activity 的重要擴展生命周期
Activity的擴展生命周期還有多個階段,例如:當前Activity被覆蓋和恢復,當前Activity Fig被轉移到前台和重新打開,以及進入和退出多窗口模式等。
當Activity被覆蓋時,會調用onPause()方法,並保存它的狀態。當恢復時,會調用onResume()方法,並恢復其狀態到之前被保存的狀態。
當Activity被轉移到前台時,會調用onStart()方法,並將其狀態恢復到前台Activity的狀態。當重新打開時,會調用onRestart()方法,並恢復其狀態到之前被保存的狀態。
當進入多窗口模式時,會調用onMultiWindowModeChanged()方法,並可以進一步處理多窗口的情況。當退出多窗口模式時,會調用onExitMultiWindowMode()方法,並可以立即退出多窗口模式。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // 當Activity被覆蓋時執行 @Override protected void onPause() { super.onPause(); // 切換到其他APP或系統頁面 } // 當Activity被恢復時執行 @Override protected void onResume() { super.onResume(); // 重新打開APP } // 當Activity進入多窗口模式時執行 @Override public void onMultiWindowModeChanged(boolean isInMultiWindowMode) { super.onMultiWindowModeChanged(isInMultiWindowMode); // 進入多窗口模式後的操作 } // 當Activity退出多窗口模式時執行 @Override public void onExitMultiWindowMode() { super.onExitMultiWindowMode(); // 退出多窗口模式後的操作 } // 當Activity被銷毀時執行 @Override protected void onDestroy() { super.onDestroy(); // 操作結束時清理資源 } }
原創文章,作者:CNQDW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/316780.html