学习整理盗QQ密码-Activity生命周期说明
盗QQ密码-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()");