启动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后一定会回调这个方法