【发布时间】:2019-06-25 07:41:22
【问题描述】:
我已经尝试了一段时间的导航组件,但不知何故没有得到当前导航组件生命周期背后的原因(或解释)。这里有一些需要澄清的地方。
1。片段到片段流
在导航组件中,每次访问(或重新访问)时都会重新创建每个片段(或者说页面)。因此,当您在 A 并转到 B 时,A 被销毁,然后当您返回 A(如按下返回按钮)时,A 是从拉伸创建的。
在传统的活动模式中,当您返回 A 时,它只会转到 onResume,因为在移动到 B 时它没有被破坏。导航组件中更改此模式的任何原因?
重新创建的问题是当您有大量数据并且需要时间重新绘制并且感觉应用程序冻结时。一个例子是简单的主页(比如 Facebook NewsFeed)。可以使用ViewModel 处理保存数据,但再次绘制所有提要需要时间并且会冻结。
娱乐会产生另一个问题。假设这种情况:A 有一个 Collapsing AppBar 和一个 NestedScrollView。用户向下滚动,AppBar 将折叠,然后用户移动到另一个页面 B。当他回到A 时,它将被重新绘制并且AppBar 被扩展。我不确定这是一个错误还是我应该做些什么来修复它?所以这里也欢迎任何解决方案。
2。活动休闲
如果由于某些原因(例如方向更改)重新创建活动,导航组件中的每个页面都会重新创建,直到当前目的地。虽然onCreate Fragment 方法不是onCreateView 被调用,但我看不到在Activity 娱乐中创建Fragment 的意义。欢迎任何解释。
【问题讨论】:
-
您的
nav_graph可能有问题。总是有fragment backstack。即使在导航组件中 -
我实际上并没有在我的
nav_graph上添加任何额外内容 -
后栈有效,但我的意思是它转到后堆叠片段的
onCreateView并被重绘
标签: android android-fragments android-jetpack android-architecture-navigation