1. Fragment与Activity的生命周期和交互
- Fragment的生命周期方法:
onAttach()
: 当Fragment与Activity建立关联时调用。onDetach()
: 当Fragment与Activity解除关联时调用。onDestroyView()
: 当Fragment的视图被移除时调用,但Fragment实例仍然保留在内存中。onDestroy()
: 当Fragment不再需要并且将被销毁时调用。
- Fragment与Activity的交互:
- 通过
getArguments()
和setArguments(Bundle)
方法,可以在Fragment创建时向其传递数据。 - Fragment可以通过接口(如回调接口)与Activity通信,以传递数据或触发事件。
- 通过
2. Activity和任务栈
- Activity的生命周期方法:
onCreate()
: 在Activity被创建时调用。onPause()
,onResume()
,onStop()
,onDestroy()
: 这些方法描述了Activity在用户与其他Activity交互时的状态变化。
- 任务栈:
- Android使用任务栈(Task Stack)来管理Activity。当一个新的Activity启动时,它会被压入栈顶,成为当前活动的Activity。当用户返回或完成一个Activity时,它会被移出栈,并可能调用相应的生命周期方法。
3. Intent和数据传递
- Intent:
- Intent是Android组件之间通信的媒介,常用于启动Activity、Service或发送广播。
- Intent可以携带数据,通过
putExtra()
等方法将数据封装到Bundle中,然后传递给目标组件。
- 数据传递:
- 使用Intent的
putExtra()
方法,可以将各种类型的数据(如字符串、整数、序列化对象等)封装到Bundle中,并通过Intent在组件之间传递。 - 在Fragment和Activity之间,除了使用Intent外,还可以通过接口、全局变量等方式传递数据。
- 使用Intent的
4. 清单文件(AndroidManifest.xml)
- Activity注册:所有Activity都必须在
AndroidManifest.xml
清单文件中声明和注册,以便系统能够识别和启动它们。
5. Fragment的静态加载和动态加载
- 静态加载:通过在布局XML文件中使用
<fragment>
标签来声明Fragment,实现Fragment的静态加载。 - 动态加载:在Activity的Java代码中,通过
FragmentManager
和FragmentTransaction
来动态地添加、移除或替换Fragment。