一、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
13private static final String TAG = MainActivity.class.getSimpleName();
14private Button btn_next, btn_halfActivity;
15
16@Override
17protected void onCreate(Bundle savedInstanceState) {
18super.onCreate(savedInstanceState);
19Log.i(TAG, "onCreate()");
20setContentView(R.layout.activity_main);
21
22// init---view
23btn_next = (Button) findViewById(R.id.btn_next);
24btn_halfActivity = (Button) findViewById(R.id.btn_halfActivity);
25btn_next.setOnClickListener(this);
26btn_halfActivity.setOnClickListener(this);
27
28}
29
30@Override
31public void onClick(View v) {
32switch (v.getId()) {
33case R.id.btn_next:
34Intent intent = new Intent(this, SecondActivity.class);
35startActivity(intent);
36break;
37case R.id.btn_halfActivity:
38Intent intent2 = new Intent(this,HalfActivity.class);
39startActivity(intent2);
40break;
41
42}
43}
44
45@Override
46protected void onStart() {
47super.onStart();
48Log.i(TAG, "onstart()");
49}
50
51@Override
52protected void onRestart() {
53super.onRestart();
54Log.i(TAG, "onRestart()");
55}
56
57@Override
58protected void onResume() {
59super.onResume();
60Log.i(TAG, "onResume()");
61}
62
63@Override
64protected void onPause() {
65super.onPause();
66Log.i(TAG, "onPause()");
67}
68
69@Override
70protected void onStop() {
71super.onStop();
72Log.i(TAG, "onStop()");
73}
74
75@Override
76protected void onDestroy() {
77super.onDestroy();
78Log.i(TAG, "onDestroy()");
79}
80
81@Override
82protected void onRestoreInstanceState(Bundle savedInstanceState) {
83super.onRestoreInstanceState(savedInstanceState);
84Log.i(TAG, "onRestoreInstanceState()");
85}
86
87@Override
88protected void onNewIntent(Intent intent) {
89super.onNewIntent(intent);
90Log.i(TAG, "onNewIntent()");
91}
92
93@Override
94protected void onSaveInstanceState(Bundle outState) {
95super.onSaveInstanceState(outState);
96Log.i(TAG, "onSaveInstanceState()");
97}
98
99
100 }