Android應用程序是由Android系統活動(Activity)的堆棧所管理的。生命周期方法是在不同的時間點被調用的一些方法。當Android系統啟動一個應用程序或者用戶操作一個應用程序時,都會在Activity執行一些操作來響應這個事件。
一、生命周期方法有哪些
生命周期方法在開發中非常重要,了解其調用順序可以更好地管理Activity,在此先介紹幾個基本的生命周期方法
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(); } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } @Override protected void onStop() { super.onStop(); } @Override protected void onDestroy() { super.onDestroy(); } }
二、生命周期方法的詳解
1. onCreate()
創建Activity時首先被調用這個方法,一般用於初始化操作,載入布局等。必須在Activity的整個生命周期中只調用一次。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 initView(); initData(); initListener(); }
2. onStart()
當Activity在屏幕上可見時,此方法將被調用。這個方法被調用後,Activity變成VISIBLE狀態,並處於前台,但此時並不是用戶和Activity進行交互的時間點。
@Override protected void onStart() { super.onStart(); //邏輯操作 startPlay(); }
3. onResume()
Activity處於resumed狀態時,此方法將被調用。這意味著Activity在前台,並與用戶進行交互。如果Activity暫停(如來電或橫幅通知等情況),則此方法不會被調用。
@Override protected void onResume() { super.onResume(); //邏輯操作 resumePlay(); }
4. onPause()
在Activity失去焦點進入Pause狀態時,此方法將被調用。此時,Activity不可見,但依然部分活躍狀態,因為用戶有可能返回當前Activity。例如,當用戶進入另一個Activity或設備進入保持活躍狀態的模式(如用戶按下電源鍵)時,將調用此方法。
@Override protected void onPause() { super.onPause(); //邏輯操作 pausePlay(); }
5. onStop()
當Activity被完全遮蓋或另一個Activity打開(並完全遮蓋)當前Activity時,此方法將被調用。需要注意的一點是,當系統自動銷毀Activity時不會調用此方法。
@Override protected void onStop() { super.onStop(); //邏輯操作 stopPlay(); }
6. onDestroy()
當Activity結束並即將銷毀時,此方法將被調用,並在當前Activity結束之前執行一些需要完成的資源釋放操作,如保存某些數據,釋放一些資源等等。
@Override protected void onDestroy() { super.onDestroy(); //邏輯操作 releasePlay(); }
三、生命周期實例
以一個簡單的計數器應用程序為例,演示Activity在不同生命周期方法中的行為
1. MainActivity.java
public class MainActivity extends AppCompatActivity { private int count = 0; private TextView mCountTv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //獲取TextView組件 mCountTv = findViewById(R.id.count_tv); mCountTv.setText(String.valueOf(count)); Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show(); } @Override protected void onStart() { super.onStart(); Toast.makeText(this, "onStart", Toast.LENGTH_SHORT).show(); } @Override protected void onResume() { super.onResume(); Toast.makeText(this, "onResume", Toast.LENGTH_SHORT).show(); } @Override protected void onPause() { super.onPause(); Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show(); } @Override protected void onStop() { super.onStop(); Toast.makeText(this, "onStop", Toast.LENGTH_SHORT).show(); } @Override protected void onDestroy() { super.onDestroy(); Toast.makeText(this, "onDestroy", Toast.LENGTH_SHORT).show(); } //增加計數 public void onCountBtnClick(View view) { count++; mCountTv.setText(String.valueOf(count)); } //重置計數 public void onResetBtnClick(View view) { count = 0; mCountTv.setText(String.valueOf(count)); } }
2. activity_main.xml
四、總結
通過本文的介紹和實例,我們掌握了生命周期的基本概念、生命周期方法的調用時機及生命周期的實現等相關知識。合理地管理Activity的生命周期可以讓我們的應用程序更加高效、穩定,更好地滿足用戶的需求。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/204261.html