Android 14 Predictive Back触发setVisibility=true崩溃问题求助
问题描述
在启用Predictive Back的Android 14设备上,使用返回手势执行返回过渡时,应用偶尔会崩溃,对应的崩溃日志为:
ActivityTaskManager system_server E setVisibility=true while transition is not collecting or finishing ActivityRecord{264a012 u0 com.my.package/.Activity1 t6967} caller=com.android.server.wm.ActivityRecord.setVisibility:5287 com.android.server.wm.BackNavigationController.setLaunchBehind:1161 com.android.server.wm.BackNavigationController.-$$Nest$smsetLaunchBehind:0 com.android.server.wm.BackNavigationController$AnimationHandler$ScheduleAnimationBuilder.applyPreviewStrategy:1103 com.android.server.wm.BackNavigationController$AnimationHandler$ScheduleAnimationBuilder.build:1122 com.android.server.wm.BackNavigationController.scheduleAnimation:392 com.android.server.wm.BackNavigationController.startBackNavigation:369 com.android.server.wm.ActivityTaskManagerService.startBackNavigation:1841项目采用Jetpack Compose UI,创建3个简单Activity后,在从Activity2/3返回Activity1时,多次前后导航即可复现该崩溃。
解决方法
临时禁用Predictive Back
在AndroidManifest.xml中为目标Activity或整个应用添加属性关闭该功能:<!-- 单个Activity --> <activity android:name=".Activity1" android:enableOnBackInvokedCallback="false" /> <!-- 全局应用级别 --> <application ... android:enableOnBackInvokedCallback="false">升级Jetpack Compose依赖
该问题属于Android 14与Compose的兼容性bug,将Compose相关依赖(如compose-bom、activity-compose)升级到最新稳定版本,Google后续修复了这类过渡动画与系统Activity管理的冲突问题。排查Activity可见性相关操作
检查所有Activity的生命周期回调及Compose代码,确保在返回过渡期间没有手动调用setVisibility()或其他修改Activity可见性的逻辑,避免干扰系统的过渡状态。迁移到Single Activity架构
基于Jetpack Compose的项目推荐使用Single Activity架构,通过Compose Navigation管理页面路由,减少多Activity切换带来的系统动画冲突,从根源上规避这类跨Activity导航的崩溃问题。
内容的提问来源于stack exchange,提问作者Pavlo28
相关产品推荐
相关产品推荐

