重温 Activity的生命周期

来源:互联网 发布:java deadlock 编辑:程序博客网 时间:2024/06/18 17:19
1.Activity的本质是什么

2.Activity的生命周期

3.Activity的启动方式---直接启动、匿名启动

4.Activity之间的数据交互

5.如何启动系统的Activity

6.Activity的启动模式

Activity的声明周期:
第一次启动:onCreate()--onStart()--onResume()-------(单击back键过后)-----onPause()--onStop()--onDestory()
显示状态:onCreate()  onStart() onResume()
看不见状态:onPause()  onStop()
销毁状态:onDestory()

多个Activity的生命周期交互的思想
onRestart()方法,在Activity重新可见的时候,先调用onRestart()方法,在调用onStart()--onResume()

第一个Activity跳转到第二个Activity:

                        A Activity                                                      B Activity

1.打开Activity的时候
     FirstActivity:onCreat()
     FirstActivity:onStart()
     FirstActivity:onResume()

2.从A Activity 打开B Activity的时候
    FirstActivity:onPause()          
                                                                                       SecondActivity:onCreate()
                                                                                       SecondActivity:onStart()
                                                                                       SecondActivity:onPause()

    FirstActivity:onStop()

3.点击B Activity的Back键的时候
                                                                                       SecondActivity:onPause()

    FirstActivity:onReStart()
    FirstActivity:onStart()
    FirstActivity:onResume()

                                                                                        SecondActivity:onStop()
                                                                                        SecondActivity:onDestory()

**********************
1.为什么要先暂停当前显示的Activity?(从A activity 跳转到 B Activity的时候)

2.为什么要先执行要打开的Activity的onCreate(),onStart(),onResume()方法呢?

3.在打开新Activity的时候,为什么不先执行当前Activity的onPause(),onStop()方法呢?

解答:假如我们现在正在打开播放音乐的app,这时候电话进来了,会调用当前Activity的onPause()方法,在这个方法里面,我们可以暂停音乐播放、保存音乐播放进度等。如果不暂停当前显示的Activity,我们就会一边拨打着电话,一边听着音乐在播放,效果很不好。
在打开另一个Activity的时候,会先调用当前Activity的onPause()方法,再调用第二个Activity的onCreate(),onStart(),onResume()方法,把第二个Activity需要的数据都准备好,确保第二个Activity可以完整的打开,如果在打开第二个Activity的时候,出现了异常,这时候界面就会出现黑屏状态,用户体验很不好。当第二个Activity可以正确的打开的时候,在调用当前Activity的onStop()方法,隐藏当前的Activity,显示第二个Activity。

Activity的横竖屏切换
onSaveInstanceState(Bundle outState)方法,用于存储activity销毁之前的信息。
这个方法在onPause()之后调用的。
横竖屏切换,会先销毁之前的activity,然后在重启activity。

Activity的启动方法
如果给activity添加隐式意图的话,需要在配置文件添加<intent-filter>
添加<action android:name="xxx">
<category android:name="android.intent.category.DEFAULT">---必须添加


0 0
原创粉丝点击