一、Activity生命周期說明
Activity的四種狀態:
⒈活動狀態(Active or Running):也稱為運行狀態,處於Activity棧頂,在用戶界面中最上層,完全能被用戶看到,能夠與用戶進行交互;
⒉ 暫停狀態(Paused):Activity失去焦點,Activity界面被部分遮擋,該Activity不再處於用戶界面的最上層,且不能夠與用戶進行交互。一個暫停狀態的Activity依然保持活力(保持所有的狀態,成員信息,與窗口管理器保持連接),但是在系統內存不夠用的時候將被殺掉;
⒊停止狀態(Stopped):Activity在界面上完全不能被用戶看到,也就是說這個Activity被其他Activity全部遮擋,但它依然保持所有狀態和成員信息,只是它不再可見,它的窗口被隱藏;
⒋非活動狀態(Killed):當系統內存需要被用在其他地方的時候,一個停止狀態的Activity被殺掉。
如果一個Activity是Paused或者Stopped狀態時可以被恢復,也可以被刪除。一個被刪除(殺掉)的Activity如果需要重新恢復就需要重啟。
當一個activity的當前狀態發生改變時,當前activity就會觸發一系列的回調方法。這些回調方法很明白的闡述了activity生命周期的變化過程。
這些方法分別為:onCreat();onstart();onResume;onPause();onStop();onRestart();onDestroy();
二、生命周期圖解說明
這張圖,相信學習過android開發的大牛們都非常的熟悉了,但我還是圖解一下:
1、當一個activity啟動時,首先會調用onCreat();方法,然後調用onStart();方法,接下來調用onResume();方法。進入activity界面,此時的activity處於Running狀態。
2、當一個不是全屏的activity被啟動時(即當前activity被不完全遮住,dialog除外),那麼當前activity首先會執行onPause();方法,當不是全屏的activity被從棧頂移除是,那麼activity會執行onResume();方法。
3、當當前activity被新的activity完全覆蓋時,或者按home回到主界面時,當前activity會執行,onPause(),onStop();方法,當回到當前activity時,會執行onRestart();onstart();onResume();方法。
4、當用戶退出當前activity時會執行onPause();onStop();最後執行onDestroy();方法。
三、程序示例解釋說明
復制代碼
1 package org.david.activitylifecycle;
2
3 import android.os.Bundle;
4 import android.app.Activity;
5 import android.content.Intent;
6 import android.util.Log;
7 import android.view.View;
8 import android.view.View.OnClickListener;
9 import android.widget.Button;
10
11 public class MainActivity extends Activity implements OnClickListener {
12
13 private static final String TAG = MainActivity.class.getSimpleName();
14 private Button btn_next, btn_halfActivity;
15
16 @Override
17 protected void onCreate(Bundle savedInstanceState) {
18 super.onCreate(savedInstanceState);
19 Log.i(TAG, "onCreate()");
20 setContentView(R.layout.activity_main);
21
22 // init---view
23 btn_next = (Button) findViewById(R.id.btn_next);
24 btn_halfActivity = (Button) findViewById(R.id.btn_halfActivity);
25 btn_next.setOnClickListener(this);
26 btn_halfActivity.setOnClickListener(this);
27
28 }
29
30 @Override
31 public void onClick(View v) {
32 switch (v.getId()) {
33 case R.id.btn_next:
34 Intent intent = new Intent(this, SecondActivity.class);
35 startActivity(intent);
36 break;
37 case R.id.btn_halfActivity:
38 Intent intent2 = new Intent(this,HalfActivity.class);
39 startActivity(intent2);
40 break;
41
42 }
43 }
44
45 @Override
46 protected void onStart() {
47 super.onStart();
48 Log.i(TAG, "onstart()");
49 }
50
51 @Override
52 protected void onRestart() {
53 super.onRestart();
54 Log.i(TAG, "onRestart()");
55 }
56
57 @Override
58 protected void onResume() {
59 super.onResume();
60 Log.i(TAG, "onResume()");
61 }
62
63 @Override
64 protected void onPause() {
65 super.onPause();
66 Log.i(TAG, "onPause()");
67 }
68
69 @Override
70 protected void onStop() {
71 super.onStop();
72 Log.i(TAG, "onStop()");
73 }
74
75 @Override
76 protected void onDestroy() {
77 super.onDestroy();
78 Log.i(TAG, "onDestroy()");
79 }
80
81 @Override
82 protected void onRestoreInstanceState(Bundle savedInstanceState) {
83 super.onRestoreInstanceState(savedInstanceState);
84 Log.i(TAG, "onRestoreInstanceState()");
85 }
86
87 @Override
88 protected void onNewIntent(Intent intent) {
89 super.onNewIntent(intent);
90 Log.i(TAG, "onNewIntent()");
91 }
92
93 @Override
94 protected void onSaveInstanceState(Bundle outState) {
95 super.onSaveInstanceState(outState);
96 Log.i(TAG, "onSaveInstanceState()");
97 }
98
99
100 }