歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android中的Activity生命周期學習

Android中的Activity生命周期學習

日期:2017/3/1 10:40:00   编辑:Linux編程
作為Android中四大組件之一的Activity是最為重要的一個組件,今天學習了Activity的生命周期。

理解Activity的生命周期對於我們去開發大的靈活的應用很有幫助,在Android系統中Activity作為Activity棧來被管理,當前活動的Activity處於棧頂,之前的不活動的Activity就會被壓入下面的稱為不活動的Activity,來進行等待,如果該Activity重新變成棧頂,就會被重新恢復活動的狀態;

看下自己畫的截圖:

1: Activity A正在運運行,然後又打開Activity B之後 Activity A就會退到棧的下一層,Activity B在棧頂.

2:如果用戶點擊後退按鈕進行返回,或者前台的Activity結束這裡(可以認為是正在運行的Activity B),此時該Activity就會被移除棧,直接被銷毀;然後站內的上一個Activity(這裡認為是Activity A)將會到棧頂,並且變成活動狀態: 如圖:

下面是代碼日志截圖:

3:接下來看下Activity生命周期中的四個重要狀態

活動狀態 -----> 在屏幕的最前面(也就是在棧頂),獲得焦點並且可見

暫停狀態 -----> 失去焦點,不過還是可見 例如:屏幕上面彈出來的Dialog

停止狀態 -----> 失去焦點,不可見

銷毀狀態 -----> 被系統銷毀

Activity 生命周期回調圖:

從上面的生命周期回調圖中,可以把生命中周期份以一下三個過程:

1:完整生命周期:Activity的完整生命周期自第一次調用onCreate()開始,直至調用onDestroy()為止。Activity在onCreate()中設置並且進行初始化,而在onDestroy()中釋放所有系統資源。

2:可見生命周期: Activity的可視生命周期自onStart()調用開始直到相應的onStop()調用結束。在此期間,用戶可以在屏幕上看到Activity,盡管它也許並不是位於前台或者也不與用戶進行交互。在這兩個方法之間,我們可以保留用來向用戶顯示這個Activity所需的資源。

3:前台可見生命周期: Activity的前台生命周期自onResume()調用起,至相應的onPause()調用為止。在此期間,Activity位於前台最上面並與用戶進行交互。Activity會經常在暫停和恢復之間進行狀態轉換

下面是Activity生命周期會進行回調的所有方法:

[java]

  1. <span style="font-size:16px;"> // onCreate 當Activity第一次啟動的時候,回調這個方法,可以在此時完成Activity的一些初始化工作
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. // TODO Auto-generated method stub
  5. super.onCreate(savedInstanceState);
  6. };
  7. // 調用這個方法表示所屬的Activity將要被展現給用戶
  8. @Override
  9. protected void onStart() {
  10. super.onStart();
  11. }
  12. // 當處於停止活動的狀態的Activity需要在線展現給用戶的時候,調用這個方法
  13. @Override
  14. protected void onRestart() {
  15. super.onRestart();
  16. }
  17. // 當Activity和用戶發生交互的時候調用這個方法
  18. @Override
  19. protected void onResume() {
  20. super.onResume();
  21. }
  22. // 當當前的Activity失去焦點,不過依然可見,例如彈出一個對話框的時候
  23. // 如果我們需要保存數據,可以在這個狀態進行保存
  24. @Override
  25. protected void onPause() {
  26. super.onPause();
  27. }
  28. // 當一個Activity不再需要展示給用戶的時候,注意一點:如果系統資源不夠的時候
  29. // 系統會直接結束這個方法,就是不會調用這個方法,
  30. @Override
  31. protected void onStop() {
  32. super.onStop();
  33. }
  34. // 當銷毀Activity的時候,調用
  35. @Override
  36. protected void onDestroy() {
  37. super.onDestroy();
  38. }</span><span style="font-size: 14pt;">
  39. </span>

①:一個Activity的啟動順序:onCreate()--->onStart()--->onResume()

②:當先打開一個Activity的時候 第一個Activity先會調用onPause() ----然後第二個Activity調用onCreate()--->onStart()--->onResume()---->第一個Activity調用onStop();

③:返回到第一個Activity的時候 第二個Activity會先調用onPause()---->然後第一個Activity調用onRestart()--->onStart()--->onResume()---->第二個Activity接著調用onStop()——>onDestory();


下面來說說 Activity的onSaveInstanceState()和 onRestoreInstanceState()方法

如果我們需要在Activity銷毀前保存一些臨時性的數據,onPause()就比較可以進行數據的持久化的保存,此時我們可以使用onSaveInstanceState()和 onRestoreInstanceState()方法。只要重寫上面兩個方法,在這裡進行數據保存操作就OK了

Copyright © Linux教程網 All Rights Reserved