目录

应用在背单词过程中出现闪退

问题现象

应用在使用背单词功能时,发生闪退。

背景知识

问题定位

  1. 从faultlogger目录下未能获取到应用相关故障日志。
  2. 在hilog日志中搜索关键字exit with code,退出码为1,应用很可能调用了process.ProcessManager().exit(1)接口主动退出了程序。
    07-21 13:16:57.700   655   655 W C02C11/appspawn/APPSPAWN: [appspawn_service.c:139]com.hx.example with pid 37605 exit with code:1
  3. 向前排查退出原因,发现应用打印了Error自定义错误,异常信息是level config not found not matched to current user未找到与当前用户匹配的级别配置。
    07-21 13:16:57.524 37605 37605 E A03D00/com.hx.example/JSAPP: onRejection, name:  Error
    07-21 13:16:57.524 37605 37605 E A03D00/com.hx.example/JSAPP: onRejection, message:  level config not found not matched to current user
    07-21 13:16:57.524 37605 37605 E A03D00/com.hx.example/JSAPP: onRejection, stack:  Cannot get SourceMap info, dump raw stack:
    07-21 13:16:57.524 37605 37605 E A03D00/com.hx.example/JSAPP:     at loadLevelConfig (phone|phone|1.0.0|src/main/ets/l2/v3/w3.ts:143:1)
  4. 排查堆栈中的相关代码,应用是否在打印异常后,主动调用了process.ProcessManager().exit()退出了进程。

分析结论

应用捕获并打印异常后,主动调用了process.ProcessManager().exit()接口退出了程序,导致闪退现象。

修改建议

尽量避免出现异常场景或者使用try-catch捕获并处理异常。

谨慎使用process.ProcessManager().exit()接口,如果入参非0会产生数据丢失或者异常情况。可以尝试使用terminateSelf或ApplicationContext.killAllProcesses代替。