从Jetpack Compose Activity跳转至XML Activity时应用崩溃求助
解决Compose Activity跳转XML Activity触发SIG:9崩溃问题
SIG:9对应SIGKILL,是系统强制终止进程的信号,常见原因包括组件配置错误、内存不足、ANR或权限问题,按以下步骤排查:
检查XML Activity的清单配置
确认目标Activity已在AndroidManifest.xml中正确注册,Android 12及以上版本需注意exported属性:<activity android:name=".XmlActivity" android:exported="false" /> <!-- 仅内部跳转设为false;需外部启动则设为true -->避免包名、类名拼写错误,不要引用不存在的主题或资源。
验证跳转代码正确性
Compose中需确保使用正确的上下文和Intent构造:// 在Composable函数中获取上下文 val context = LocalContext.current Button(onClick = { val intent = Intent(context, XmlActivity::class.java) context.startActivity(intent) }) { Text("跳转到XML Activity") }多模块项目需确认导入了正确的Activity类,避免跨模块类名混淆。
排查内存溢出(OOM)
用Android Studio Profiler监测内存:- 跳转前若内存已接近阈值,检查Compose页面是否有未释放的大资源(比如未回收的位图、未取消的协程)。
- 检查XML Activity的
onCreate中是否加载了超大资源,这类操作会瞬间耗尽内存触发系统杀进程。
排查ANR问题
查看Logcat中的ANR日志(搜索ANR in),若跳转时主线程执行了耗时操作(同步数据库查询、网络请求),需移至子线程:override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_xml) // 耗时操作移至子线程 lifecycleScope.launch(Dispatchers.IO) { // 执行数据库查询或网络请求 } }清理构建缓存并重建
执行Build -> Clean Project和Build -> Rebuild Project,同时清除应用本地数据,排除构建缓存或旧数据导致的异常。
内容的提问来源于stack exchange,提问作者Hanin Sakhri
相关产品推荐
相关产品推荐

