Android应用点击特定页面返回键崩溃问题求助
崩溃问题排查结论
根本原因
崩溃和你复用Activity的跳转逻辑无关联,完全由AppGain SDK的处理缺陷导致:
- 从DonateActivity点击返回时,AppGain SDK会自动触发
userdidnotdonate事件上报请求,请求的automator.appgain.io接口返回了500服务端错误 - 错误返回内容是
text/html格式的服务端错误页,并非SDK预期的JSON格式,SDK未做异常场景兼容,直接将HTML字符串传给Gson做反序列化 - Gson解析时预期JSON对象开头的
{,实际收到的是HTML开头的<,直接抛出JsonSyntaxException未被捕获,导致主线程崩溃 - 仅特定页面跳转后返回崩溃的原因:仅该跳转来源页开启了AppGain SDK对应捐赠事件的监听逻辑,其他页面未触发该事件上报,因此不会出现异常
修复方案
临时快速规避
- 重写DonateActivity的
onBackPressed、onDestroy生命周期方法,返回时先主动取消AppGain SDK的待执行网络请求,避免请求回调在页面销毁后执行 - 全局给AppGain SDK的相关回调增加try-catch捕获,捕获JSON解析类异常,避免异常抛出到主线程导致崩溃
永久修复
- 排查特定跳转来源页传入AppGain SDK的参数和其他页面的差异,确认是否是参数异常导致服务端返回500错误
- 联系AppGain SDK官方反馈该问题,要求其优化服务端错误场景的兼容逻辑,避免抛出未捕获异常
内容的提问来源于stack exchange,提问作者Mahmoud Al-Haroon
相关产品推荐
相关产品推荐

