导航架构组件-BottomNavigationView避免重新加载片段

问题描述 投票:1回答:1

我正在使用BottomNavigationView从我的导航图中显示一堆片段。

底部导航器在我的MainActivity中是这样设置的:

val navController = findNavController(R.id.mainNavigationFragment)
setupActionBarWithNavController(navController)
bottomNavigationView.setupWithNavController(navController)

每个片段都有其自己的FragmentScoped viewmodel以提供其内容。

循环浏览bottomnavview中的每个选项卡,我看到正在重新创建片段,这又导致为该片段创建了新的viewmodel实例。这将导致新的api调用再次获取数据。

如何避免重新获取此数据?

我知道我可以做到这些:

  1. 使用“活动”视图模型来托管所有这些数据,但这只会创建一个单一的viewmodel来托管我所有片段的数据。

  2. 缓存api响应,以便片段重新生成从缓存中获取数据,而不是进行新的网络调用

是否有任何平台提供了最佳实践,我可以遵循此最佳实践来避免每次重新获取数据?

谢谢

android android-fragments android-navigation android-architecture-navigation
1个回答
0
投票

更好地设置底部为ViewPagerTabLayout(可以设置样式,使其看起来非常相似,除了它没有那些编号的标志),然后您可以定义屏幕外阈值,即保持活动的页面数-在导航的同时,这是一种自欺欺人的方法,因为只需替换碎片即可,而无需任何条件。

© www.soinside.com 2019 - 2024. All rights reserved.