为什么PublicActivity可正常启动,其子类启动后onResume立刻回调onPause?
Manifest配置不一致
依赖库中内置的PublicActivity在库的AndroidManifest.xml中配置了特殊属性,你自定义的PublicActivity2使用主项目默认配置未对齐:常见的冲突属性包括
android:theme(如果主题包含windowNoDisplay=true/windowIsTranslucent=true会导致页面不会停留在前台)、android:launchMode、android:taskAffinity,配置不匹配会导致新Activity启动后被系统自动调度到后台,触发onPause回调。
验证方案:将库中PublicActivity的所有Manifest声明属性完全复制到主项目PublicActivity2的声明节点中,再重新测试启动逻辑。ActivityUtils内置白名单拦截
你调用的ActivityUtils.showActivity()内部大概率存在类名校验逻辑,仅允许跳转库内置的Activity类,检测到跳转目标是主项目自定义的PublicActivity2时,会在启动后主动调用finish()关闭页面,所以刚走完onResume就触发onPause。
验证方案:反编译ActivityUtils的实现代码,检查showActivity方法内是否有对传入的Class类名、包名做匹配过滤的逻辑,或者是否有延迟关闭页面的任务逻辑。全局生命周期监听拦截
项目中大概率注册了Application.ActivityLifecycleCallbacks全局生命周期回调,里面配置了页面白名单规则,仅允许指定列表内的Activity启动,库中PublicActivity在白名单内,你新增的PublicActivity2不在规则内,所以启动后会被监听逻辑主动关闭。
验证方案:搜索项目中所有ActivityLifecycleCallbacks的实现,检查onActivityResumed回调中是否有判断类名后关闭页面的逻辑。
内容的提问来源于stack exchange,提问作者Alexey Simchenko

