项目疑难杂症记录(四):Activity被重新创建的原因分析

本文记录了一起Android项目中因configChanges导致Activity被重新创建的问题。当用户点击升级框的放弃按钮时,Activity被销毁并重新创建,引发崩溃。通过对系统源码的分析,发现是键盘类型变化导致的configuration更新,从而触发了Activity的重启。解决方案是在AndroidManifest.xml中针对键盘变化进行配置处理,以避免不必要的Activity重建。
摘要由CSDN通过智能技术生成

在项目中遇到一个奇怪的Bug,插上带有升级包固件的U盘,选择升级框中的放弃按钮,Activity被onDestroy,随后又重新onCreate,相应的图片和日志如下:
【一】 现象和日志

1、升级框
在这里插入图片描述
2、点击放弃按钮

在这里插入图片描述
3.日志如下:

     1528 D MainActivity: onCreate
	 1528  1528 D MainActivity: onResume
     1528  1528 D MainActivity: surfaceChanged
	 1528  1528 D MainActivity: onStop
	 1528  1528 D MainActivity: onDestroy
	  1528 D MainActivity: onCreate

从日志中看,PID为1528,没有变化,说明进程还是在的,只是Activity被重新创建了,由于Activity重新创建,底层so资源释放存在一点问题,所以如图二所见,崩溃了。

【二】、原因分析

有一些Android开发经验的朋友都知道,如果Activity被销毁,一般ActivityManager会打印出一些比如,force stop - destroy XXActivity之类的,很可惜我打印出来的日志没有。
没办法,先提出几个可能导致的原因,然后逐一排查。
(1)、和升级框会不会有必然的关系?为什么点击放弃之后,Activity就创建呢?升级框是不是干掉我们呢?
(2)、是不是系统底层的某种机制或者策略导致了Activity重新创建?

好,顺着这个思路,先把RkUpdateService.apk pull出来,反编译,查看其到底做了什么,为了保护原作者的创作,这里我就不贴出来截图了,结果是他们 do Nothing !!

第一条思路排除了,那现在

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值