https://github.com/android/architecture-components-samples/issues/530
大概两年前开始使用 Navigation,当时觉得把所有 Fragment 都保存在一个导航图的理念很先进,然后就用了,然后发现每次 Fragment 都会重新创建,如果从 A 页面到 B 页面,然后返回 A 页面,那么 A 页面会被重建,FragmentA - FragmentB - New FragmentA,无论用户还是开发者都是不希望页面被重建的,https://github.com/android/architecture-components-samples/issues/530#issuecomment-658360926
于是有了这位同学的解决方法,https://github.com/android/architecture-components-samples/issues/530#issuecomment-526455102
public NavDestination navigate(@NonNull Destination destination, @Nullable Bundle args,
@Nullable NavOptions navOptions, @Nullable Navigator.Extras navigatorExtras) {
// ft.replace(mContainerId, frag);
// change to
if(mFragmentManager.getFragments().size()>0){
ft.hide(mFragmentManager.getFragments().get(mFragmentManager.getFragments().size()-1));
ft.add(mContainerId, frag);
}else {
ft.replace(mContainerId, frag);
}
}
于是就这样用了一年多,但是这个方法用起来也确实会有很多内存消耗问题,而且在非主流配置的机器上,页面跳转明显比官方的 Navigate()方法响应慢。
于是又翻了下这个问题的讨论情况,发现还是老样子,官方坚持说这么做会消耗大量内存,https://github.com/android/architecture-components-samples/issues/530#issuecomment-789131002 说这里是给你讨论我的 sample 代码的 issue 的,不是讨论 library 本身的??还坚持说我 Fragment 也没问题(没有任何人报告 issue ),各种保存和恢复机制都给你做好了等等等等,然后把问题关了??
请问下有用使用 Navigation 的同学吗?请说说你们的看法,谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.