Activity销毁onStop或onDestroy延时10s左右才回调
深入分析Android中Activity的onStop和onDestroy()回调延时及延时10s的问题 - 简书
2019-11-14 0:34 半夜 还在公司解决bug
这个问题以前没重视过,一直以为onDestroy 里不能处理耗时的资源操作。可没想到栈内前一层的Activity 动画会影响到顶层Activity的onDestroy。
详细不多讲了,前两篇文章讲解的很到位了,我发生的问题跟第二篇开头描述的问题一致,但没这个闲工夫看,第一篇其实讲了原因但是对于寻找bug不是特别友好,尤其是在不知道哪里执行了动画或者是否存在页面不断刷新的同学。
首先打开开发者模式中的 显示面(surface)更新 便于观察位置
再打开自己的app,进入到对应的发生延迟现象的上一层Activity,看到如果屏幕不停闪动,则说明页面不停地再重绘,需要找到不停调用 invalidate() 的方法,一般出现在自定义的view 控件中,去布局文件中找到对应自定义控件。
我代码写的比较随意,把 invalidate() 放在了 if 判断外面导致页面不停地再重绘。invalidate() 只需要在计算到有偏差的时候再重绘就可以了。
修改后 解决了startActivity 后 onDestroy 延迟的问题