您的位置:首页 > 其它

Activity与Fragment的生命周期

2016-03-24 20:08 260 查看
1、首先先上图

Activity Fragment





         对比图                



2、Activity的生命周期分析说明

onCreated()是activity第一次被启动时执行的,主要是初始化一些变量(启动第一步)

onRestart()是当前activity重新被启动时调用的;绑定一些监听器等(可见状态)

onStart()是activity界面被显示出来的时候执行的(可见状态)。

onResume()是当该activity与用户能进行交互时被执行,(能获取到焦点)

onPause()是另一个activity被启动,当前的activity就被暂停了,一般在该函数中执行保存当前的数据(被遮挡住)。

onStop()表示另一个activity被启动完成时,当前activity对用户同时又完全不可见时才调用的(不可见状态)。

onDestroy()是退出当前activity时调用的,当然如果程序中调用finish()或者说android系统当前资源不够用时就会被调用(销毁)。
当用多个activity在执行时,这时候android系统会自动将这些activity压入栈中并且总是显示最顶的那个activity,这个栈在android叫做task,但是这个栈只支持压入和弹出操作,不支持排序插入等操作。
Activity的7个生命周期函数中的onStop()函数被调用时是在其对应的activity被另外的activity完全遮挡的时候,如果只有部分遮挡,则不会被调用。部分遮挡一般是以消息activtiy的形式出现,这个只需在AndroidManifest.xml中将其对于的activity的主题设置theme中更改即可。当系统资源不够时,其中onPause(),onStop(),onDestroy()是有可能被系统kill掉的,但其它4个是不会被kill掉。

实验验证:连个Activity相互跳转,ActivityA设置一个button跳转到ActivityB

一开始程序运行时是首先调用第1个activity的onCreate(),onStart(),onResume()函数,然后按下button后,调用第1个activity的onPause(),和第2个activity的onCreate(),onStart(),onResume()函数,然后接着调用第1个activity的onStop(),当按下系统返回键时,这时会调用第2个activity的onPause(),接着是第1个activity的onRestart(),onStart(),onResume(), 最后是调用第2个的onStop()和onDestroy().

3、Fragment的生命周期分析说明

1. 当一个fragment被创建的时候,它会经历以下状态.

onAttach()

onCreate()

onCreateView()

onActivityCreated()

2. 当这个fragment对用户可见的时候,它会经历以下状态。

onStart()

onResume()

3. 当这个fragment进入“后台模式”的时候,它会经历以下状态。

onPause()

onStop()

4. 当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。

onPause()

onStop()

onDestroyView()

onDestroy() // 本来漏掉类这个回调,感谢xiangxue336提出。

onDetach()

5. 就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。

onCreate()

onCreateView()

onActivityCreated()

6. fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。

onAttached() —— 当fragment被加入到activity时调用(在这个方法中可以获得所在的activity)。

onCreateView() —— 当activity要得到fragment的layout时,调用此方法,fragment在其中创建自己的layout(界面)。

onActivityCreated() —— 当activity的onCreated()方法返回后调用此方法

onDestroyView() —— 当fragment中的视图被移除的时候,调用这个方法。

onDetach() —— 当fragment和activity分离的时候,调用这个方法。

一旦activity进入resumed状态(也就是running状态),你就可以自由地添加和删除fragment了。因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: