13_Android的生命周期
Activity的生命周期圖
2 Android生命周期中涉及到的幾個過程
| 1.啟動Activity:系統會先調用onCreate方法,然后調用onStart方法,最后調用onResume,Activity進入運行狀態。 |
| 2. 當前Activity被其他Activity覆蓋其上或被鎖屏,系統會調用onPause方法,暫停當前Activity的執行。 |
| 3.當前Activity由被覆蓋狀態回到前臺或解鎖鎖屏:系統會調用onResume方法,再次進入運行狀態。 |
| 4.當前Activity轉到的Activity界面或按Home鍵回到主屏,自身退居后臺:系統會先調用onPause方法,然后調用onStop方法。進入停滯狀態。 |
| 5.用戶后退回到此Activity:系統會先后調用onRestart方法,然后調用onStart方法,最后調用onResume方法,再次進入運行狀態。 |
| 6.當前Activity處于被覆蓋狀態或者后臺不可見狀態,即第2步和第4步,系統內存不足,殺死當前Activity,而后用戶退回當前Activity,再次調用onCreate方法、onStart方法、onResume方法,進入運行狀態。 |
| 7.當用戶退出當前Activity:系統先調用onPause方法,然后調用onStop方法,最后調用onDestory方法,結束當前Activity. |
3.編寫如下程序進行測試
4 Android清單文件如下:
| <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" ??? package="com.itheima.lifecycle" ??? android:versionCode="1" ??? android:versionName="1.0" > ? ??? <uses-sdk ??????? android:minSdkVersion="8" ??????? android:targetSdkVersion="19" /> ? ??? <application ??????? android:allowBackup="true" ??????? android:icon="@drawable/ic_launcher" ??????? android:label="@string/app_name" ??????? android:theme="@style/AppTheme" > ??????? <activity ??????????? android:name="com.itheima.lifecycle.MainActivity" ??????????? android:label="@string/app_name" > ??????????? <intent-filter> ??????????????? <action android:name="android.intent.action.MAIN" /> ? ??????????????? <category android:name="android.intent.category.LAUNCHER" /> ??????????? </intent-filter> ??????? </activity> ??????? <activity ??????????? android:theme="@android:style/Theme.Translucent" ??????????? android:name="com.itheima.lifecycle.SecondActivity"> ??????? </activity> ??? </application> ? </manifest> |
5 布局文件activity_main.xml
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ??? xmlns:tools="http://schemas.android.com/tools" ??? android:layout_width="match_parent" ??? android:layout_height="match_parent" ??? tools:context=".MainActivity" > ??? ??? <Button ??????? android:onClick="click" ??????? android:layout_width="wrap_content" ??????? android:layout_height="wrap_content" ??????? android:layout_centerVertical="true" ??????? android:layout_centerHorizontal="true" ????? ??android:text="開啟第二個界面"/> ??? </RelativeLayout> |
布局文件:activity_second.xml
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ??? xmlns:tools="http://schemas.android.com/tools" ??? android:layout_width="match_parent" ??? android:layout_height="match_parent" ??? tools:context=".SecondActivity" > ??? ?? <TextView ??????? android:layout_width="wrap_content" ??????? android:layout_height="wrap_content" ??????? android:layout_centerHorizontal="true" ??????? android:layout_centerVertical="true" ??????? android:text="我是第二個界面"/> ? </RelativeLayout> |
6 MainActivity的代碼如下:
| package com.itheima.lifecycle; ? import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; ? public class MainActivity extends ActionBarActivity { ? ????????????????????? /** ????????????????????? ?* 被創建的時候調用的方法 ????????????????????? ?*/ ????????????????????? @Override ????????????????????? protected void onCreate(Bundle savedInstanceState) { ??????????????????????????? super.onCreate(savedInstanceState); ??????????????????????????? setContentView(R.layout.activity_main); ????????????????????? ??????????????????????????? System.out.println("oncreate"); ????????????????????? } ? ????????????????????? /** ????????????????????? ?* 被銷毀的時候調用的方法 ????????????????????? ?*/ ????????????????????? @Override ????????????????????? protected void onDestroy() { ??????????????????????????? System.out.println("onDestroy"); ??????????????????????????? super.onDestroy(); ????????????????????? } ????????????????????? ????????????????????? /** ????????????????????? ?* 當activity界面可見的時候調用的方法 ????????????????????? ?* Activity創建或者從后臺重新回到前臺時候被調用 ????????????????????? ?*/ ????????????????????? @Override ????????????????????? protected void onStart() { ??????????????????????????? System.out.println("onStart"); ??????????????????????????? super.onStart(); ????????????????????? } ????????????????????? ????????????????????? /** ????????????????????? ?* Activity從后臺重新回到前臺時被調用 ????????????????????? ?*/ ????????????????????? protected void onRestart() { ??????????????????????????? System.out.println("onstart"); ??????????????????????????? super.onRestart(); ????????????????????? } ????????????????????? ????????????????????? /** ????????????????????? ?* 當activity界面用戶不可見的時候調用的方法 ????????????????????? ?*/ ????????????????????? @Override ????????????????????? protected void onStop() { ??????????????????????????? System.out.println("onStop"); ??????????????????????????? super.onStop(); ????????????????????? } ????????????????????? ????????????????????? /** ????????????????????? ?* 界面開始獲取到焦點對應的方法。 ????????????????????? ?* (界面按鈕可以被點擊,文本框可以輸入內容) ????????????????????? ?* ????????????????????? ?* Activity創建或者從被覆蓋、后臺重新回到前臺時被調用 ????????????????????? ?*/ ????????????????????? @Override ????????????????????? protected void onResume() { ??????????????????????????? System.out.println("onresume"); ??????????????????????????? super.onResume(); ????????????????????? } ????????????????????? ????????????????????? /** ????????????????????? ?* 界面失去焦點對應的方法(暫停) ????????????????????? ?* (按鈕不可被點擊,文本框不可,但是界面輸入內容,用戶仍然能看見) ????????????????????? ?*/ ????????????????????? @Override ????????????????????? protected void onPause() { ??????????????????????????? System.out.println("onpause"); ??????????????????????????? super.onPause(); ??????????????????????????? //可能在執行完onPause或onStop后,系統資源緊張將Activity殺死,所以有 ??????????????????????????? //必要在此保存持久數據 ????????????????????? } ????????????????????? ????????????????????? /** ????????????????????? ?* 窗口獲得或失去焦點是被調用,在onResume之后或onPause之后 ????????????????????? ?*/ ????????????????????? public void onWindowFocusChanged(boolean hasFocus) { ??????????????????????????? System.out.println("onWindowFocusChanged"); ??????????????????????????? super.onWindowFocusChanged(hasFocus); ????????????????????? } ????????????????????? ????????????????????? /** ????????????????????? ?* Activity被系統殺死是被調用。 ????????????????????? ?* 例如:屏幕方向改變時,Activity被銷毀在重建;當前Activity處于后臺,系統資源 ????????????????????? ?* 緊張將其殺死。 ????????????????????? ?* 另外,當跳轉到其他Activity或者按Home鍵回到主屏是該方法也被調用,系統為了保存 ????????????????????? ?* 當前View組件,在onPause之后前被調用。 ????????????????????? ?*/ ????????????????????? protected void onSaveInstanceState(Bundle outState) { ??????????????????????????? System.out.println("onSaveInstanceState"); ??????????????????????????? super.onSaveInstanceState(outState); ????????????????????? } ????????????????????? ????????????????????? /** ????????????????????? ?* Activity被系統殺死后再重建時被調用 ????????????????????? ?* 例如:屏幕方向改變時,Activity被銷毀在重建,當前Activity處于后臺,系統 ????????????????????? ?* 資源緊張將其殺死,用戶又啟動該Activity,這兩種情況下onRestoreInstanceState ????????????????????? ?* 都被調用,在onStart之后。 ????????????????????? ?*/ ????????????????????? protected void onRestoreInstanceState(Bundle savedInstanceState) { ??????????????????????????? System.out.println("onRestoreInstanceState"); ??????????????????????????? super.onRestoreInstanceState(savedInstanceState); ????????????????????? } ????????????????????? ????????????????????? public void click(View view) { ????????????????????? ????? Intent intent = new Intent(this,SecondActivity.class); ??????????????????????????? startActivity(intent); ????????????????????? } } |
7 SecondActivity的內容如下:
| package com.itheima.lifecycle; ? import android.app.Activity; import android.os.Bundle; ? public class SecondActivity extends Activity { ? ???????? @Override ???????? protected void onCreate(Bundle savedInstanceState) { ?????????????????? super.onCreate(savedInstanceState);??????????????????????????????????????????????????????????????? ?????????????????? setContentView(R.layout.activity_second); ???????? } } |
?
總結
以上是生活随笔為你收集整理的13_Android的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 19款帕萨特大灯多少w的?
- 下一篇: 14_Android中Service的使