在开发中发现有许许多多的坑,每次解决后都没有记录,时间一长,这些坑再次出现的时候,发现突然忘了怎么解决的了,所以用一篇文章记录一下这些,开发中遇到的坑:
- 开启时白屏
开启时慢或白屏
有时候,你在打开一个app的时候会发现,你点击了这个app的图标,打开之后会出现一段时间的白屏或者图标卡顿一会再进入app界面,为啥会卡呀,是我们的手机用久了么?查了一些博客发现,并不是,而是因为app的冷启动时间过长的原因造成app进入假死状态了。
如何解决呢,
首先我们得知为什么会出现这个白屏,在AndroidManifest.xml配置文件里面,你会看到你的LAUNCHER activity的配置
<activity
android:name=".StartPageActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这样的配置就会出现白屏的问题,如何解决呢,首先我们需要在Values/style中添加一个Android Theme
<style name="AppBlackTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
这个主题很简单,就是设置为透明,然后我们将这个主题设置到刚刚的LAUNCHER activity上
<activity
android:name=".StartPageActivity"
android:theme="@style/AppBlackTheme"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这个时候你再打开你的app,就会发现不会再闪白屏了
问题所在
后台无app残留的进程服务,重新打开app的时候,从初始化application,结束后再到欢迎界面,很多情况下,就是因为初始化application的时间过长导致了app假死的状态,然后再导致ANR的,所以我们就要优化application的初始化时间,如何去缩短初始化的时间,让app运行得更加流畅。
我们使用EventBus来解决这个问题如下图:
上图是方法二app冷启动的打开流程图,这个流程我就不说了,自己看图吧,这里代码也没什么还写,无非就是写EventBus的发送事件和处理事件,这个也不用上代码了吧?可以实践一下,这个也很简单的,有人会说,这个能优化的时间有多少啊?我大概测试了一下,优化的空间还是比较大的,可以缩短50%的时间左右,也就是说如果你的app一开始打开的时候需要三四秒,使用了这个简单粗暴法之后只需要一秒多就能打开了,是不是很爽?