Navigation
说明
以 Android studio demo 示例为例
默认的 NavController
在构造函数只添加了两个导航器
1 | public NavController( Context context){ |
在 NavHostFragment
中增加了对 Fragment
和 Dialog
导航的兼容
1 | protected void onCreateNavController( NavController navController){ |
不足
路由中所有的路由节点都需要在
mobile_navigation
声明,在中大型多团队的项目并不友好,具有严重的耦合解决方式:
可以通过注解处理器进行解决,将
mobile_navigation
里的参数全部挪到注解中,然后通过在对应的Activity
Fragment
Dialog
中进行注解声明,然后注解处理器将注解内容解析成对应的配置文件存放在assets
目录中,在应用启动时读取该json
进行手动配置,参考:androidx.navigation.NavInflater#inflate(android.content.res.Resources, android.content.res.XmlResourceParser, android.util.AttributeSet, int)
在
FragmentNavigator
中导航使用的是replace
,造成Fragment
走完整的生命周期,这也是不可接受的解决方式:
参考
FragmentNavigator
重新编写一份添加到NavigatorProvider
中,对replace
逻辑进行重新编排