自从知道这一招之后我基本不太愿意使用activity了,fragment可以快速创建和管理,可以合理设计页面跳转,设计炫酷的跳转动画,一些操作可以统一进行管理。
- 用Fragment替代Activity
以前大部分时候都是将Activity作为页面,Fragment作为页面中的子页面(当时称之为碎片),基本上大部分功能由activity实现,比如老版本的淘宝app就是有上百个activity,当时卡顿的不要不要的。随着技术迭代,我们发现activtiy创建、切换、销毁所消耗的性能远比fragment要大,fragment如今也能替代activity实现大部分功能。
- 将Activity作为容器
我理解的单Activity+多Fragment
模式并不是指一个App一定只有一个activity,对于一些业务相关的场景,可以整合成一个单Activity+多Fragment
模块,将activity作为fragment的容器,让fragment去做UI绘制工作。
- 管理Fragment栈
我们可以使用navigation管理fragment,fragment之间的跳转、栈管理都轻而易举,navigation还可以设置切换动画、页面间的数据传递。
Navigation组件
Navigation是Jetpack组件之一,很早之前iOS就是采用的这种跳转方式,当时就在想Android为啥没有,没多久Navigation就面世了。
Navigation可以理解为以一个管理fragment的容器,在容器中各个fragment可以实现任意跳转,
基础使用:
- 我们需要在布局中创建Fragment容器:
<androidx.fragment.app.FragmentContainerView
android:id="@+id/main_fragment_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:name="androidx.navigation.fragment.NavHostFragment"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf=