读书笔记--Activity的生命周期、加载模式,以及Fragment

来源:互联网 发布:字体识别软件app 编辑:程序博客网 时间:2024/05/24 05:45

启动Activity时,依次调用onCreate、onStart和onResume方法

当Activity有部分内容可见时,仅调用它的onPause方法 (如在该Activity中启动另一个不全屏的Activity)

关闭这个不全屏的Activity后,调用onResume方法

当下滑通知栏时,不启动onPause方法

全都不可见时,调用onPause和onStop方法

切回来后,依次调用onRestart、onStart和onResume方法

调用finish()方法结束该Activity后,依次调用onPause、onStop和onDestory方法


配置Activity时可以指定android:launchMode属性,用于配置加载模式

standard: 标准模式,每次启动都会创建一个新的实例,并被添加到当前Task中

singleTop: Task顶部单例模式,如果被启动的Activity在Task栈顶,将直接复用已有的Activity,否则同standard模式

singleTask: Task内部单例模式,如果在Task内存在Activity但不在栈顶,将把位于其上的所有Activity移出Task,然后复用该Activity,否则同singleTop模式

singleInstance: 全局单例模式,如果Activity已经存在,无论位于哪个应用程序中,无论位于哪个Task中,系统都会把该Activity所在的Task转到前台,从而使用该Activity。注意,使用该模式加载的Activity总是位于Task的栈顶,该Task只包含该Activity

Android采用Task来管理多个Activity,可以调用Activity的getTaskId()来获取它所在的Task的ID。Task可以被理解为Activity的栈,先启动的Activity放在栈底,后启动的放在栈顶


Fragment必须被“嵌入”Activity中使用,它的生命周期受该Activity的生命周期所控制,通过使用Fragment,可以方便地在平板等大屏幕上,并列显示内容,同时方便地兼容在小屏幕设备上的显示

Fragment可以调用getActivity获取它所在的Activity,Activity也可以用FragmentManager的findFragmentById或findFragmentByTag来获取Fragment

Activity可调用FragmentManager的add、remove、replace来管理Fragment

一个Activity可以同时组合多个Fragment,反过来一个Fragment也可以被多个Activity复用

Fragment可以响应自己的输入事件


通常创建Fragment需要实现如下三个方法:

onCreate:创建后回调该方法,一般只初始化想要保持的必要组件

onCreateView:绘制界面时回调该方法,必须返回一个View,即所显示的View

onPause:离开时回调

将Fragment添加到Activity中有如下两种方式:

在布局文件中用<fragment.../>元素添加,其中的android:name属性指定实现类

在代码中通过FragmentTransaction对象的add方法来添加

Activity向Fragment传递数据,可以调用Fragment的setArguments( Bundle bundle )传递

Fragment向Activity传递数据,或进行实时通信时,在Fragment中定义一个内部回调接口,再让Activity实现该接口,然后Fragment调用该方法即可

Fragment的生命周期中,共有如下方法:

onAttach:被添加到Activity时被回调,只会被调用一次

onCreate:创建时被回调,只会被调用一次

onCreateView:每次创建、绘制Fragment的View组件时回调

onActivityCreated:当Fragment所在的Activity被启动完成后,回调该方法

onStart:启动Fragment时被回调

onResume:恢复Fragment时被回调

onPause:暂停

onStop:停止

onDestroyView:销毁Fragment所包含的View组件时被调用

onDestroy:销毁Fragment时被回调

onDetach:将该Fragment从Activity中删除、替换完成时,回调该方法,只会被调用一次。onDestroy后一定会回调这个方法

0 0
原创粉丝点击