Activity的生命周期详解
来源:互联网 发布:如何在淘宝里开网店 编辑:程序博客网 时间:2024/05/16 05:04
在Android的学习当中,activity可能是我们最先接触到的,简单的说它就是一个我们能看到的界面,是Context的子类,实现了Window.CallBack和KeyEvent.CallBack,能够和用户进行交互,所以Activity非常重要,下面对它的声明周期进行讲解:
先来看看官方文档吧:
从上图中,可以看出activity有如下几个声明周期:onCreate()、onStart() 、onResume()、 onPause() 、onStop() 、onDestory()与 onRestart()这个7个声明周期方法。
Android的应用程序的生命周期是被统一掌控的,也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习并适应它。简单地说一下为什么是这样:我们手机在运行,一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源 ,至少要保证电话功能吧,所以资源不足的时候也就有可能被干掉。
言归正传,Activity的基本生命周期如下代码 所示:
public class AActivity extends AppCompatActivity { private static String TAG="AActivity---"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println(TAG+"onCreate"); } @Override protected void onRestart() { super.onRestart(); System.out.println(TAG+"onRestart"); } @Override protected void onStart() { super.onStart(); System.out.println(TAG+"onStart"); } @Override protected void onResume() { super.onResume(); System.out.println(TAG+"onResume"); } @Override protected void onPause() { super.onPause(); System.out.println(TAG+"onPause"); } @Override protected void onStop() { super.onStop(); System.out.println(TAG+"onStop"); } @Override protected void onDestroy() { super.onDestroy(); System.out.println(TAG+"onDestroy"); }}
运行输出如下:
可知,Activity创建的时候,声明周期的调用顺序是:onCreate()、onStart()、onResume() ,
在onCreate()方法,创建界面,经常做数据的初始化操作。
在onStart()方法,此时用户便可以看见界面了,注意此时是不能响应触摸事件的。
执行onResume()方法后,便获取了焦点,可以响应用户的触摸事件,另外在Android的LanuchpadActivity源代码的onResume()方法中,可以看到广播接收者的注册在这个方法中,所以当需要注册广播接收者推荐在这个方法中注册。
下面点击手机返回键:
当点击返回键后,声明周期得调用顺序是:onPause()、onStaop()、onDestroy()。
onPause(),这个方法执行后便失去可焦点,不能响应触摸事件。onPause,onstop, onDestroy,三种状态 下 activity都有可能被系统干掉为了保证程序的正确性,你要在onPause()里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上(一般都是数据库 )。
onStop(),不可见。
onDestroy(),这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方
法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断它。
如果你有一个Progress Dialog在线程中转动,请在onDestroy里把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛异常的。
接着执行锁屏操作:
执行顺序是:onPause()、onStop()。注意此时,并没有执行onDestory()方法,说明activity此时仅仅是被隐藏了,并没有被杀死。
继续执行,开锁操作:
执行顺序是:onRestart()、onResume()、onResume(),此时,并没有执行onCreate()方法,这样便印证了上面的被隐藏之说,此时仅仅是重启启动被隐藏的activity,并没有重新创建。
- Activity的生命周期详解
- Activity的生命周期详解
- Activity的生命周期详解
- Activity的生命周期详解
- Activity的生命周期详解
- Activity生命周期的详解
- Activity的生命周期详解
- Activity的生命周期图文详解
- 关于Activity生命周期的详解
- android activity详解二:Activity的生命周期
- android activity详解二:Activity的生命周期
- android activity详解二:Activity的生命周期
- Android activity 详解一:activity的生命周期
- 详解Android Activity:Activity的生命周期
- android Activity 的生命周期的详解
- android之activity的生命周期详解
- 安卓Activity的生命周期函数详解
- 2015最新对activity生命周期的详解
- android-问题- Error running app
- 二分-网线主管
- Android异常之Service启动Activity
- iOS 只有下划线的输入框
- http://blog.sina.com.cn/ainideduyuxielan
- Activity的生命周期详解
- 2016 acm/icpc 大连站现场赛(7道题)
- 子网掩码学习小记
- 英科学家研发智能绷带 随伤口感染变色
- 子网掩码学习小记
- 解决bash和dash兼容性导致的问题
- hadoop yarn-site.xml配置
- cassandra cql
- 深入理解CSS3 Animation 帧动画(step详解)