Small中单个模块AddFlags 启动异常的解决方法

问题:单个模块的某个activity需要动态添加启动模式的话,如果单个模块运行,ok,不会有问题,但是整个项目运行的话,动态添加的启动模式就不起作用;

原因:https://github.com/wequick/Small/issues/415这个页面中比较重要的话是,看了下,主要的问题在 CLEAR_TOP 这个 Flag 上,由于我们的占坑Activity的Component同为一个:net.wequick.small.A(以下简写为A),包括你所举例子中的 MainActivity。所以这个过程应该是:

A A A A -> CLEAR_TOP启动 -> AAAA-> 返回Finish ->A=> 桌面

虽然Small在应用进程对 A 设置了targetActivity使其能正确跳往插件Activity,但是系统进程的缓存中targetActivity是空的,从而出现上述流程。源码参见ActivityRecord.java。

可能的解决方法:

某种方式hook掉ActivityRecord(在系统进程里,希望不大)

进入wrapIntent后,清除 CLEAR_TOP Flag,模拟底层处理方式


解决方法:在宿主中注册,并且不再单个模块app.* 内注册,但是项目就必须整个模块运行,单个模块就不行


small


small1

你可能感兴趣的:(Small中单个模块AddFlags 启动异常的解决方法)