首页 > 移动平台 > 详细

Android Fragment 生命周期及其API使用

时间:2015-10-14 00:15:09      阅读:387      评论:0      收藏:0      [点我收藏+]

Fragment:( Fragment就相当于一个有生命周期的View,它的生命周期被所在的Activity的生命周期管理 )

技术分享

生命周期回调说明:

onAttach(Activity)
当Fragment与Activity发生关联时调用。
onCreateView(LayoutInflater, ViewGroup,Bundle)
创建该Fragment的视图
onActivityCreated(Bundle)
当Activity的onCreate方法返回时调用
onDestoryView()
与onCreateView想对应,当该Fragment的视图被移除时调用
onDetach()
与onAttach相对应,当Fragment与Activity关联被取消时调用

Fragment Api:

Fragment常用的三个类:

android.app.Fragment 主要用于定义Fragment

android.app.FragmentManager 主要用于在Activity中操作Fragment

android.app.FragmentTransaction 保证一些列Fragment操作的原子性

主要的操作都是FragmentTransaction的方法:

 1 // v4包中,getSupportFragmentManager
 2 FragmentManager fm = getFragmentManager();
 3 // 开启一个事务 (主要的操作都是FragmentTransaction的方法)
 4 FragmentTransaction transaction = fm.benginTransatcion();
 5 
 6 // 往Activity中添加一个Fragment
 7 transaction.add(Fragment fragment);
 8 // 从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。
 9 transaction.remove(Fragment fragment);
10 // 使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体
11 transaction.replace(R.id.XXX, Fragment fragment);
12 // 隐藏当前的Fragment,仅仅是设为不可见,并不会销毁
13 transaction.hide(Fragment fragment);
14 // 显示之前隐藏的Fragment
15 transaction.show(Fragment fragment);
16 //提交一个事务
17 transatcion.commit();

// 会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。

detach()

// 重建view视图,附加到UI上并显示。

attach();

判断什么时候该使用什么方法:

(1)希望保留用户操作的面板,可以使用hide和show。

(2)不希望保留用户操作,可以使用remove(),然后add();或者直接使用replace(),效果相同。

(3)remove会销毁整个Fragment实例,而detach则只是销毁其视图结构,实例并不会被销毁。

(4)当前Activity一直存在,那么在不希望保留用户操作的时候,可以优先使用detach。

参考地址:Android Fragment 真正的完全解析(上)     Android Fragment 真正的完全解析(下)

 

对于一些操作,Fragment发生的生命周期变化:

切换到该Fragment:onAttach() -> onCreate() -> onCreateView() -> onActivityCreated() -> onStart() -> onResume()

屏幕灭掉或者回到桌面(Home): onPause() -> onSaveInstanceState() -> onStop()

屏幕解锁或者重新回到应用: onStart() -> onResume()

切换到其他Fragment: onPause() -> onStop() -> onDestroyView()

切换回本身的Fragment: onCreateView() -> onActivityCreated() -> onStart() -> onResume()

退出应用:onPause() -> onStop() -> onDestroyView() -> onDestroy() -> onDetach()

Android Fragment 生命周期及其API使用

原文:http://www.cnblogs.com/CharlesGrant/p/4876135.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!