以下内容整理自互联网,仅用于个人学习
- 完整生存期:onCreate()方法和onDestroy()方法之间。
- 可见生存期:onStart()方法和onStop()方法之间。
- 前台生存期:onResume()方法和onPause()方法之间。
Activity
activity生命周期.pngFragment
1. 为什么需要Fragment
为了更好的利用大屏幕的空间,同时适配手机和平板、UI和逻辑的共享,在平板中广泛使用。
2. Fragment生命周期
fragment生命周期.png3. Fragment比Activity多了几个额外的生命周期回调方法:
- onAttach(Activity):当Fragment和Activity发生关联时使用
- onCreateView(LayoutInflater, ViewGroup, Bundle):创建该Fragment的视图
- onActivityCreate(Bundle):当Activity的onCreate方法返回时调用
- onDestoryView():与onCreateView相对应,当该Fragment的视图被移除时调用
- onDetach():与onAttach相对应,当Fragment与Activity关联被取消时调用
4. 动态添加fragment的步骤
- 创建待添加的fragment实例。
- 获取FragmentManager,在activity中可以直接调用getFragmentManager()方法得到。
- 通过beginTransaction()方法开启一个事务。
- 向容器中添加fragment,一般使用replace()方法实现。
- 调用commit()方法提交事务。
AnotherFragment fragment = new AnotherFragment();
FragmentManager fm = getFragmentManager();
fm.beginTransaction()
.replace(R.id.fragmentContainer, fragment)
.commit();
5. Fragment与Activity之间的交互
Fragment与Activity之间的交互可以通过Fragment.setArguments(Bundle args)以及Fragment.getArguments()来实现。
6. Fragment状态的持久化
- 可以通过protected void onSaveInstanceState(Bundle outState)
,protected void onRestoreInstanceState(Bundle savedInstanceState)
状态保存和恢复的方法将状态持久化。 - 让Android自动帮我们保存
- FragmentManager.putFragment(Bundle bundle, String key, Fragment fragment)是在Activity中保存Fragment的方法。
- FragmentManager.getFragment(Bundle bundle, String key)是在Activity中获取所保存的Frament的方法。
很显然,key就传入Fragment的id,fragment就是你要保存状态的fragment,但,我们注意到上面的两个方法,第一个参数都是Bundle,这就意味着FragmentManager是通过Bundle去保存Fragment的。但是,这个方法仅仅能够保存Fragment中的控件状态,比如说EditText中用户已经输入的文字(注意!在这里,控件需要设置一个id,否则Android将不会为我们保存控件的状态),而Fragment中需要持久化的变量依然会丢失,但依然有解决办法,就是利用方法一!
网友评论