更多内容请访问:Harmonyos技术社区https://harmonyos.51cto.comAbilitySlice中的页面,不能单独使用。Fraction的生命周期状态取决于其容器,如果容器被销毁,则其中的所有fraction也将被销毁。我们可以使用Fraction定义各种布局来丰富应用程序的用户界面。下面给大家介绍一下Fraction的具体用法和它的生命周期。Fraction的使用首先,如果我们要使用Fraction,就必须让Ability继承FractionAbility。publicclassFractionAbilityextendsAbility{publicFractionAbility(){thrownewRuntimeException("Stub!");}publicFractionManagergetFractionManager(){thrownewRuntimeException("Stub!");}...}为什么要继承FractionAbility?通过FractionAbility的源码可以看出,内部提供了getFractionManager()方法,该方法返回的FractionManager是管理Fraction生命周期的关键方法。因此,让我们简单地使用Fraction。首先我们创建一个布局,布局文件fraction_first.xml为Fraction。创建布局文件后,我们再来创建一个继承Fraction的新类TestFraction。publicclassTestFractionextendsFraction{@OverrideprotectedComponentonComponentAttached(LayoutScatterscatter,ComponentContainercontainer,Intentintent){Componentcomponent=scatter.parse(ResourceTable.Layout_fraction_first,container,false);returnitycomponent;}}这样一个简单的Fraction就会加进去,然后创建,布局文件ability_test_fraction.xml。TestFractionAbility继承FractionAbility。publicclassTestFractionAbilityextendsFractionAbility{@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_test_fraction);FractionManagerfractionManager=getFractionManager();fractionManager.startFractionScheduler().add(ResourceTable.Id_fraction_container,newTestFraction()).submit();}}这样,TestFraction就成功加入到Ability中了。ability_test_fraction.xml中的fraction_container是放置TestFraction的容器。在触摸机上运行效果如下:FractionManager方法探索我们已经了解了Fraction的简单用法,接下来我们将研究Fraction管理的关键类FractionManager。publicclassFractionManager{FractionManager(){thrownewRuntimeException("Stub!");}publicFractionSchedulerstartFractionScheduler(){thrownewRuntimeException("Stub!");}publicvoidpopFromStack(){thrownewRuntimeException("Stub!");}publicvoidsfltimepopFromStack(Stringta)"Stub!");}publicOptionalgetFractionByTag(Stringtag){thrownewRuntimeException("Stub!");}}这里有startFractionScheduler()、popFromStack()、popFromStack(Stringtag,intflags)、getFractionByTag(Stringtag)四个方法。getFractionByTag(Stringtag)方法很明显就是通过tag获取相加的Fraction,那么popFromStack()方法的作用是什么呢?为了研究这个方法的使用,我们先来看startFractionScheduler(),它返回的是FractionScheduler对象Fraction调度器,字面理解应该是Fractionmanager,我们看看FractionScheduler提供了哪些方法来管理Fraction。publicabstractclassFractionScheduler{publicFractionScheduler(){thrownewRuntimeException("Stub!");}publicabstractFractionScheduleradd(intvar1,Fractionvar2);publicabstractFractionScheduleradd(intvar1,Fractionvar2,Stringvar3);publicabstractFractionSchedulerreplace(intvar1,Fractionvar2);publicabstractFractionSchedulerremove(Fractionvar1);publicabstractFractionSchedulerhide(Fractionvar1);publicabstractFractionSchedulershow(Fractionvar1);publicabstractintsubmit();publicabstractFractionSchedulerpushIntoStack(Stringvar1);}这里通过代码可以直观的看出FractionScheduler是一个抽象类,提供了Fraction的添加、替换、移除和显示的方法,最后通过submit()方法提交操作。有一个很特别的方法pushIntoStack(Stringvar1),这个方法具体是干什么的,结合上面我们发现它是和popFromStack()方法配合使用的,一个加一个去掉。让我们写一个简单的例子来演示这个方法的使用。fractionManager=getFractionManager();fractionManager.startFractionScheduler().add(ResourceTable.Id_fraction_container,newTestFraction()).pushIntoStack("1").submit();fractionManager.startFractionScheduler().add(ResourceTable.Id_fraction_container,newFirstFraction()).pushIntoStack("2").submit();fractionManager.startFractionScheduler().add(ResourceTable.Id_fraction_container,newSecondFraction()).pushIntoStack("3").submit();fun1.setClickedListener(newComponent.ClickedListener(){@OverridepublicvoidonClick(Componentcomponent){System.out.println("fractionManager.popFromStack()");fractionManager.popFromStack();}});fun2.setClickedListener(newComponent.ClickedListener(){@OverridepublicvoidonClick(Componentcomponent){System.out.println("fractionManager.popFromStack(\"\",1)");fractionManager.popFromStack("2",1);}});将三个Fraction添加到同一个容器中,并使用pushIntoStack("")方法将Fraction添加到栈中,先看popFromStack()调用的效果可以看到依次去掉SecondFraction、FirstFraction、TestFraction,重新运行工程。我们在调用popFromStack(Stringtag,intflags)方法,设置tag为“2”,FirstFraction查看运行效果。SecondFraction和FirstFraction被同时移除。通过实践可以看出,每次调用popFromStack()都会移除栈顶的Fraction,popFromStack(Stringtag,intflags)会移除tag及其上面的所有Fraction。了解了具体的作用之后,我们以后的开发场景中就可以根据需求来管理Fraction了。Fraction的生命周期研究了Fraction的具体用法。让我们来探索一下FractioninAbility的生命周期。Fraction生命周期主要涉及8个方法,分别是onComponentAttached、onStart、onActive、onInactive、onBackground、onForeground、onStop、onComponentDetach。我们为每个方法添加一个logrunner来查看生命周期的具体情况。启动Fraction,依次调用onComponentAttached、onStart、onActive方法。按home进入后台调用onInactive和onBackground方法返回前台。调用onForeground和onActive方法退出应用程序。Fraction的基本用法,Fraction涉及的关键类以及在其中打开的关键方法,最后探究Fraction的生命周期。当然,Fraction也有缺陷。在实际开发中,我们可能需要在Fraction中嵌套Fraction。目前鸿蒙没有Fraction嵌套,不支持Fraction。所以我们在使用过程中需要避免Fraction嵌套的弯路。更多信息请访问:Harmonyos.51cto.com,与华为官方合作打造的鸿蒙技术社区