Android Activity的生命周期
来源:互联网 发布:鲜活的数据 下载 编辑:程序博客网 时间:2024/05/20 23:56
一、Activity简介
Android系统通过Activity栈对Activity进行管理,而Activity通过自身的生命周期方法来管理自己的创建和毁灭。
Activity的四种状态:
1.Active/Running:运行状态,此时Activity位于栈顶,是可见状态,可与用户进行交互。
2.Paused:暂停状态,此时Activity失去焦点,不能与用户交互,但依然对用户可见(比如栈顶的Activity是透明的,或者栈顶的Activity没有铺满整个屏幕)。
3.Stopped:停止状态,当Activity被其他Activity完全遮挡时,被遮挡的Activity进入Stopped状态,此时对用户不可见,也不能与用户进行交互。
4.Killed:销毁状态,当Activity由于人为或者系统原因被销毁时,就处于Killed状态。
二、Activity生命周期
首先看一张官方文档中的Activity的生命周期图(https://developer.android.com/reference/android/app/Activity.html):
由上图可以看出,一个简单的完整生命周期的执行顺序为:onCreate->onStart->onResume->onPause->onStop->onDestroy。
下面介绍一下Activity中几个重要生命周期方法调用的时机:
1.onCreate:在Activity被创建时回调,一般在创建Activity时都需要重写该方法,在该方法中进行一些初始化操作,如设置界面布局的资源,初始化组件信息等。
2.onStart:Activity正在启动时回调,此时Activity已经处于可见状态,只是还没有显示到前台,无法与用户进行交互。
3.onResume:该方法回调时表示Activity已在前台可见,并可以与用户交互。
4.onPause:该方法回调时表示Activity正在停止。
5.onStop:该方法一般在onPause方法执行完成后直接执行,表示Activity停止或者被完全覆盖,此时Activity不可见,也不能与用户交互。
6.onRestart:表示Activity正在重新启动,当Activity由不可见状态变为可见状态时回调。
7.onDestroy:Activity正在被销毁时回调,是Activity生命周期中最后执行的一个方法,可以在该方法中做一些回收工作或最终资源的释放。
三、代码部分
1.只有一个Activity时的简单生命周期代码演示:
public class MainActivity extends Activity { private static final String TAG = "Info"; //定义TAG标签 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v(TAG,"A执行onCreate"); } @Override protected void onStart() { super.onStart(); Log.v(TAG, "A执行onStart"); } @Override protected void onResume() { super.onResume(); Log.v(TAG, "A执行onResume"); } @Override protected void onPause() { super.onPause(); Log.v(TAG, "A执行onPause"); } @Override protected void onStop() { super.onStop(); Log.v(TAG, "A执行onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.v(TAG, "A执行onDestroy"); } @Override protected void onRestart() { super.onRestart(); Log.v(TAG, "A执行onRestart"); }}
下面根据打印的Log信息来分析一下Activity的生命周期:
(1)Activity启动时:
依次执行onCreate->onStart->onRusume方法,进入运行状态,此时可见并可与用户交互。
(2)点击Home键返回:
依次执行onPause->onStop方法,此时Activity不可见。
(3)点击App回到页面:
依次执行onRestart->onStart->onResume方法,Activity重新进入运行状态。
(4)点击Back键返回:
依次执行onPause->onStop->onDestroy方法,销毁Activity。
2.Activity跳转过程中的生命周期代码演示:
在布局中添加一个跳转按钮,在MainActivity的onCreate()中绑定按钮的点击事件,点击按钮跳转到SecondActivity界面。
/*第二个Activity,由MainActivity跳转到SecondActivity*/public class SecondActivity extends Activity { private static final String TAG = "Info"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second_activity); Log.v(TAG,"B执行onCreate"); } @Override protected void onStart() { super.onStart(); Log.v(TAG, "B执行onStart"); } @Override protected void onResume() { super.onResume(); Log.v(TAG, "B执行onResume"); } @Override protected void onPause() { super.onPause(); Log.v(TAG, "B执行onPause"); } @Override protected void onStop() { super.onStop(); Log.v(TAG, "B执行onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.v(TAG, "B执行onDestroy"); } @Override protected void onRestart() { super.onRestart(); Log.v(TAG, "B执行onRestart"); }}
分析:
(1)MainActivity启动时:
MainActivity依次执行onCreate->onStart->onResume方法,进入运行状态。
(2)点击进入SecondActivity:
进入新的Activity时,原Activity依次执行onPause->onStop,与点击Home键时回调的方法相同,新的Activity依次执行onCreate->onStart->onResume。
(3)返回到MainActivity:
新的Activity依次执行onPause->onStop->onDestroy,而原Activity依次执行onRestart->onStart->onResume,回到MainActivity界面。
(4)点击Back键返回:
原Activity依次执行onPause->onStop->onDestroy,销毁Activity。
3.Activity跳转过程中,若跳转到SecondActivity时MainActivity没有被完全遮挡,则跳转后MainActivity不执行onStop。
如有错误之处,欢迎指出!
- Android activity的生命周期
- Android:Activity的生命周期
- Android Activity的生命周期
- Android Activity的生命周期
- Android Activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Android Activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- android activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Android activity的生命周期
- Android Activity的生命周期
- HDU 6119 小小粉丝度度熊
- 关于html css 的部分细节处理的经验 网页布局分析
- poj--1061青蛙的约会(扩展欧几里得公式的应用)
- Mac 键盘快捷键
- RecyclerView
- Android Activity的生命周期
- 从网络获取gson数据
- 2017.8.13
- 斯坦福—深度学习和计算机视觉
- 关于字符串的isbn
- 对账系统
- POJ 2676 Sudoku 跳舞链 || dfs
- 上了一节新课--函数
- Hdu6118 度度熊的交易计划(2017"百度之星"程序设计大赛