android开发------Activity生命周期
這幾天工作比較忙,基本沒有什么時間更新播客了。
趁著今晚有點時間,我們來簡單說一下什么是Activity生命周期和它們各階段的特征
?
什么是生命周期
在還沒有接觸android開發的時候,聽到有人說Activity生命周期的時候,覺得這是一個很專業很深奧的東西。
但是在了解過之后,原來并不是那么一回事,這個Activity生命周期其實是很基礎的東西,明白他們的原理對我們以后開發
編寫優秀程序有很大幫助。
生命周期其實就是一個東西從出生到消亡的這段時間,那么Activity生命周期又是怎么一回事呢?
我們先借用官方的一張圖說明一下,看下面的圖。
從圖中可見,在Activity的生命周期中,在不同的階段都由不同他的函數控制它們的行為。當然這個行為可以由用戶自己決定。
我們先不看圖片左邊的箭頭,我們看的是圖片中間和右邊的部分。
?
?
周期第一階段:活定階段,即從lanucned到running階段。
特征:處于窗口最前端,整個Activity都可以被用戶看見
函數執行順序:onCreate()->onStart()->onResume()
為了證明這些函數是確確實實被執行的,我們編寫以下代碼:
1 package com.aidevelops.activitys; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.util.Log; 6 7 public class MainActivity extends Activity { 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 Log.d("Active", "onCreate method started"); 14 } 15 16 @Override 17 protected void onResume() { 18 super.onResume(); 19 Log.d("Active", "onResume method started"); 20 } 21 22 @Override 23 protected void onStart() { 24 super.onStart(); 25 Log.d("Active", "onStart method started"); 26 } 27 28 29 30 } View Code?Log.d(tag, message)函數用于將指定tag的message打印到logcat控制臺
我們可以將tag理解為一個分類
運行程序后打開LogCat窗口,創建一個條件過濾器
如圖:
點擊綠色的+號后彈出一個窗口:
注意Log.d()函數的第一個參數就是by log Tag中的Tag,第二個參數是要打印到LogCat控制臺的信息
填好后點擊OK。接著點剛才創建的LiifeCycle過濾器,就能看到下圖的信息:
我們可以看到,每個函數都按順序執行了。
?
第二階段:暫停階段
特征:Activity被部分遮擋。例如被半透明的窗口遮擋。
涉及的函數:onPause()、onResume()
第三階段:停止階段
特征:Activity完全被遮擋,例如打開了一個新的Activity。
涉及的函數:onPause()、onStop()
當用戶導航回到之前停止的Activity的時候,就會觸發已經停止的Activity重新啟動。
涉及的函數:onRestart()->onStart()->onResume()
如圖:
onPause和onStop是我們啟動另一個Activity的時候觸發的
而onRestart,onStart,onResume是我們點擊后退鍵的時候觸發的
大家有興趣的可以自己寫代碼測試。只需要像上面的代碼一樣,覆蓋相應的聲明周期函數,填入你想測試的代碼就可以了。
貼上完整代碼:
1 package com.aidevelops.activitys; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.util.Log; 7 import android.view.View; 8 9 public class MainActivity extends Activity { 10 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { 13 super.onCreate(savedInstanceState); 14 setContentView(R.layout.activity_main); 15 Log.d("Active", "onCreate method started"); 16 } 17 18 @Override 19 protected void onResume() { 20 super.onResume(); 21 Log.d("Active", "onResume method started"); 22 } 23 24 @Override 25 protected void onStart() { 26 super.onStart(); 27 Log.d("Active", "onStart method started"); 28 } 29 30 @Override 31 protected void onPause() { 32 super.onPause(); 33 Log.d("Active", "onPause method started"); 34 } 35 36 @Override 37 protected void onRestart() { 38 super.onRestart(); 39 Log.d("Active", "onRestart method started"); 40 } 41 42 @Override 43 protected void onStop() { 44 super.onStop(); 45 Log.d("Active", "onStop method started"); 46 } 47 48 public void onClickStartActivity(View view) 49 { 50 Intent intent = new Intent(this, TargetActivity.class); 51 startActivity(intent); 52 } 53 54 } View Code?
那么知道這些東西對我們有什么作用,我們后面繼續講,因為博主已經累了,呵呵,大家都早點睡吧,早睡早起身體好,:-)
轉載于:https://www.cnblogs.com/ai-developers/p/android_activity_lifecycle.html
總結
以上是生活随笔為你收集整理的android开发------Activity生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DEBUG_NEW和THIS_FILE
- 下一篇: IOS零碎技术整理(3)-获取wifi列