好久没写建书里,今天遇到了一个很有意思但也是值得纪念的bug特留此文章纪念。
起因:
应公司产品需求需要做一个“改号”的需求这个需求做到最后需要重启应用。在安卓机上的经过大概是这样的。
经过:
这个时候的日志打印的就是从活动1到活动2.但是让我有疑问的是。全部代码就活动一有intent到活动二的方法。但是跳转的时候是有日志的如果只是粗心大意写错业务逻辑应该有记录。但是日志里并没有这样的日志记录。这个时候我就是非常懵逼的。为啥会平白无故的到活动二呢。这个时候我就琢磨了。全局只有活动一中有跳转到活动1而活动3是重启。那会不会是重启的时候没有整个把栈出干净呢。
活动3重启代码如下。
这个时候我就在想是不是下面这行代码出现了问题。看内容就知道获得了当前应用的进程。找到这个进程之后给这个进程杀死。我原本理解为找到这个进程杀死了那么这个进程就是这个应用那他所有的服务活动都应该被杀死了。也就是所有活动都出栈了。
抱着试一试的想法就是在杀死进程的时候调用所有活动出栈的方法。结果达到了预期的效果。
结果:
从而得出结论可能是没有出栈的问题。但是具体是什么情况我还是不是很明白上网查的时候都说会直接杀死进程和活动。这和我开始的想法一致但是和实践的结果不一致。具体是什么情况会继续验证。