Handler.post导致的程序黑屏

项目新增一个播放视频闪屏页然后跳转到主页的需求,做好之后但是发现程序安装第一次打开主页的时候会有3秒的黑屏和2秒的加载中状态切换,打开第一次之后就不再出现了,这个问题测试提了bug,既然这么影响性能,那么就看看到底是哪里的问题吧

首先想到的是:1 既然用了播放器播放视频,会不会是因为播放器回收的比较慢导致的呢
新建了一个空白的Activity,播放完视频直接跳新的Activity十分流畅,没有任何卡顿,所以问题就定位到主页Activity

2 是不是因为主页里面加载初始化数据和渲染布局太浪费时间了?

我在onStart,onCreate,onResume方法中全部打上Log记录程序执行的时间发现总共只用了一秒就把所有渲染走完了,按道理不会啊,卡顿了这么多秒,你居然告诉我最多只会卡顿一秒,这不是骗我吗?

3 难道是onCreate方法里面有一些不常规的方法?

果然经过抽丝剥茧,发现了一处嫌疑:

我们项目使用的是360的RePlugi插件化,有一个模块作为了插件Apk,同事在这里初始化了,具体怎么初始化的呢?用的是Handler.post,这就是问题的所在!

Handler.post的特性成功躲避了log,handler.post方法的终极最直观的理解与解释

作者分析的很到位,post一个Rnnable只是把Rnnable放到了队列,并不是立即执行,所以log走过了这条语句但是程序并没有执行这句话呢,后续开始执行这句代码

正巧这段代码是耗时操作,前一个闪屏页finish掉之后,新页面由于耗时咩有办法完成绘制只能看到黑屏,以后在遇到疑难杂症,在此记录下。

猜你喜欢

转载自blog.csdn.net/losingcarryjie/article/details/80574322
今日推荐