在Android開發中,Activity是應用程序UI界面的載體。當用戶點擊應用程序的主圖標或從其他應用程序跳轉至該應用時,會啟動一個Activity。在這篇文章中,我們將詳細討論Android Activity的生命周期及其應用場景。
一、Activity生命周期
Activity生命周期由以下步驟組成:
1. 創建階段(onCreate())
Activity開始創建時被調用。通常在此階段完成界面元素的初始化工作,如設置布局(layout)、獲取資源(objects)等等。以下是一個示例:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ... 其他初始化代碼 ...
}
}
2. 可見階段(onStart()和onResume())
在創建完成後,Activity被從後台移至前景並可見時,會調用onStart()和onResume()。在這個階段,可以觸發耗時操作或開始執行某些任務。
public class MainActivity extends AppCompatActivity {
@Override
protected void onStart() {
super.onStart();
// 此處可進行一些耗時操作、數據刷新等
}
@Override
protected void onResume() {
super.onResume();
// 此處可開始執行某些任務
}
}
3. 停止階段(onPause()和onStop())
當Activity失去焦點或被其他Activity遮蓋時,會執行onPause()和onStop()方法。在這個階段一些資源可以被釋放或一些操作可以被撤銷。
public class MainActivity extends AppCompatActivity {
@Override
protected void onPause() {
super.onPause();
// 此處可釋放一些資源、取消一些操作等
}
@Override
protected void onStop() {
super.onStop();
// 此處可進行一些長時間操作的停止或撤銷
}
}
4. 銷毀階段(onDestroy())
當Activity被銷毀時會執行onDestroy()方法。一旦Activity被銷毀,其內存和其他資源都會被回收清理。
public class MainActivity extends AppCompatActivity {
@Override
protected void onDestroy() {
super.onDestroy();
// 在此銷毀一些資源
}
}
二、生命周期應用場景
1. 保存數據
Activity的生命周期方法可以用於保存和恢復Activity的狀態信息。下面代碼演示如何在Activity被暫停或停止時保存數據,在重新啟動Activity時恢複數據:
public class MainActivity extends AppCompatActivity {
private String mText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState != null) {
mText = savedInstanceState.getString("text");
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("text", mText);
}
@Override
protected void onStop() {
super.onStop();
mText = "Hello World";
}
}
2. 進入全屏模式
Activity的生命周期方法也可以用於隱藏和顯示狀態欄。下面代碼演示如何在進入全屏模式時隱藏狀態欄,在退出全屏模式時顯示狀態欄:
public class MainActivity extends AppCompatActivity {
@Override
protected void onResume() {
super.onResume();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
@Override
protected void onPause() {
super.onPause();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
3. 後台任務
Activity的可見階段可以用於後台任務的開始和停止。下面代碼演示如何在Activity進入可見階段時開始執行一個後台任務,在Activity進入不可見階段時停止後台任務:
public class MainActivity extends AppCompatActivity {
private MyTask mTask;
@Override
protected void onResume() {
super.onResume();
mTask = new MyTask();
mTask.execute();
}
@Override
protected void onPause() {
super.onPause();
mTask.cancel(true);
}
private class MyTask extends AsyncTask {
@Override
protected Void doInBackground(Void... voids) {
// 執行後台任務的代碼
return null;
}
}
}
三、結論
本篇文章詳細討論了Android Activity的生命周期及其應用場景。了解生命周期的基本流程並熟悉其應用場景,將有助於您更深入地理解Android開發。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/257563.html