win10碎片数据模块化 (w10碎片化处理)

碎片是活动的一部分,使得活动更加的模块化设计。可以认为碎片是一种子活动。

碎片拥有自己的布局,自己的行为及自己的生命周期回调。当活动在运行的时候,你可以在活动中添加或者移除碎片。你可以合并多个碎片在一个单一的活动中来构电脑建多栏的UI。碎片可以被用在多个活动中。碎片的生命周期和它的宿主活动紧密关联。这意味着活动被暂停,所有活动中的碎片被停止。碎片可以实现行为而没有用户界面组件。碎片是Android API版本11中被加入到 Android API。


通过继承Fragment类来创建碎片。可以通过使用 元素在活动的布局文件中声明碎片来在你的活动中插入碎片。

在引入碎片之前,由于每次给定的一个时间点在屏幕上只能显示单一的活动,因此我们有一个局限。我们无法分割设备屏幕并且独立的控制不同的部分。伴随着碎片的引入,我们获得了更大的灵活性,并使得一个时间点只能在屏幕上有一个单一活动的限制被移除。现在我们可以有单一的活动,但每个活动由多个碎片组装,每个碎片有自己的布局,事件和完整的生命周期。

一、碎片的状态

每个碎片在其生命周期内都可能经历运行、暂停、停止和销毁这几种状态,只不过在一些细小的地方会有部分区别
1、运行状态

当一个碎片是可见的,并且它所关联的活动正处于运行状态是,该碎片也也处于运行状态

2、暂停状态

当一个活动进入到暂停状态时(由于另一个未占满屏幕的活动呗添加到了栈顶),与它相关的可见碎片就会进入到暂停状态。

3、停止状态

当一个活动进入停止状态时,与它相关联的碎片就会进入到停止状态,或者通过调用FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但如果commit()前调用addToBackStack()方法,这时碎片也会进入到停止状态。进入停止状态的碎片对用户来说是完全不可见的,有可能会被系统回收

4、销毁状态

碎片总是依附于活动而存在的,因此活动被销毁时,与它相关联的碎片就会进入到销毁状态。调用FragmentTransaction中的remove()、replace()方法将碎片从活动中移除,当在commit()前没有调用AddToBackStack()此时碎片也进入到销毁状态。

二、碎片的回调onAttach() :当碎片和活动建立关联的时候调用onCreateView(): 为碎片创建视图(加载布局)时调用onActivityCreated(): 确保与碎片相关联的活动已创建完毕时调用onDestroyView(): 当与碎片相关联的视图被移除的时候调用onDetach():当碎片和活动解除关联的时候调用shiyitu三、完整的生命周期示意图示意图电脑

onAttach(): 碎片实例被关联到活动实例。碎片和活动还没有完全初始化。通常,你在该方法中获取到活动的引用,在碎片将来的初始化工作中被使用。onCreate(): 当创建碎片时,系统调用该方法。你需要初始化一些碎片的必要组件。这些组件是当碎片被暂停、停止时需要保留的,以便被恢复。onCreateView(): 当碎片将要第一次绘制它的用户界面时系统调用该方法。为了绘制碎片的UI,你需要从该方法中返回一个代表碎片根布局的View组件。如果该碎片不提供用户界面,直接返回null。onActivityCreated: 当宿主活动被创建,在onCreateView()方法之后调用该方法。活动和碎片实例与活动的视图层级被创建。这时,视图可以通过findViewById()方法来访问。在这个方法中,你可以实例化需要Context对象的对象。onStart(): 碎片可见时调用该方法。onResume(): 碎片可交互时调用该方法。onPause(): 当首次表明用户将要离开碎片时系统调用该方法。通常,这里你需要提交任何的会超出用户会话的持久化的变化。onStop(): 碎片将要被停止时调用。onDestroyView(): 调用该方法后,碎片将要被销毁。onDestroy(): 该方法被用来清理碎片的状态。但在Android平台并不保证一定被调用。触发场景

1 . 碎片被创建时调用顺序 : onAttach() onCreate() onCreateView() onActivityCreated()

2 . 重新启动时时调用顺序 : onStart() onResume()

3 . 碎片进入后台 : onPause() 电脑onStop()

4 . 碎片被销毁(所在的活动被销毁) 调用顺序: onPause() onStop() onDestroyView() onDestroy() onDetach()

5 . 与活动一样,可以使用Bundle对象在以下状态中还原碎片实例 : onCreate() onCreateView() onActivityCreated()

四、区分onCreateView与onActivityCreated的区别onCreateView():每次创建、绘制该Fragment的View组件时回调该方法,Fragment将会显示该方法返回的View组件。onActivityCreated():当Fragment所在的Activity被启动完成后回调该方法。静态的view不需要onActivityCreated保存view的状态的时候需要用onActivityCreated访问父activity的view层的时候需要在onActivityCreated 方法里面做


即如果view是静态的,那么没有必要在onActivityCreated 方法去调用,大多数的自定义的view,初始化时都需要一个context,而activity是context的子类,所以在onCreateView方法的时候非静态的view初始化调用可能出现异常,所以对于非静态的view,最好在onActivityCreated方法调用








电脑