Android:同一App不同Activity间跳转踩过的坑

出现的坑

app开发过程中,我们自定义了activity的堆栈管理,这样就很方便控制activity的进栈、出栈,以及activity间的跳转。这种做法用了很长时间一直没有问题,突然有一天,测试人员跟我说“登录界面,输入密码进行登录操作,抓包发现登录接口是成功的,但是界面没有跳转,以前都是正常的,不知道现在为什么不能跳转了”。
这个坑就出现了:同一个app,不同activity间跳转,从第一个activity正常跳转(startActivity)到第二个activity,第一个activity就被onDestroy了,这是为什么呢?

填坑过程

我一听,第一反应就是在自己的测试机上验证此问题是否存在,最终结果当然是不存在的。
接下来,我就用那个测试人员的手机进行调试,通过debug以及打印日志(见截图)发现activity A跳转到activity B时,A被destroy了,我一下子就愣住了,这不符合常理啊!根本就不符合activity的生命周期啊!难道是不同手机的rom在这一块动了手脚?按理说,手机厂商不可能去强制改变activity的生命周期,这背离了android系统设计的原理(从activity A正常跳转到activity B,A应该处于onStop状态,而不应该被onDestrory了)。接下来就在网上查阅相关资料,有人说可能是用户手机设置了“后台不保留活动”。于是,我就打开那部有问题的手机,查看是否存在这个问题,结果发现,果然是这个原因,关闭这个开关即可(注意:一般手机出厂时,这个开关肯定是关闭的,如果手动打开,就会影响整个系统所有app的activity生命周期,到时出现的问题会让你抓狂)。

非正常现象的日志截图:

Android:同一App不同Activity间跳转踩过的坑_第1张图片

正常现象的日志截图:

这里写图片描述

Android:同一App不同Activity间跳转踩过的坑_第2张图片

一点感悟

在平时,不管是工作还是生活中,碰到一些问题,很多人可能第一反应就是如何回避它,不理睬。其实,我们换个角度想想,出现问题,是在让我们进步,如果你回避,就是不想进步,所以,我们应该分析问题、找出原因、解决问题、总结问题。这样,我们就能在人生的道路上越走越平坦。

你可能感兴趣的:(Android)