最近在搞项目的时候发现咱App启动有点慢啊,特别是第一次打开,那0.5秒的白屏简直让人抓狂。项目经理有没有注意到这个小细节?可能你没在意,也可能已经解决了,但冷启动这事儿还真不能忽视。
问题来了,还没加载布局文件,窗口背景就已经显示出来了,黑屏白屏就是这么来的。布局还没出来,窗口是白色,咋整?
这里有俩解决办法:
1. 让窗口透明,这样启动的时候就看不到那个烦人的白屏了。
2. 给窗口加个背景图,一进来就能看到,白屏不就解决了嘛。
先说第一种透明的方法:把主题设置到启动Activity上,用`@android:color/transparent`让背景透明。效果就是点开图标后虽然启动了,但是窗口透明,没有白屏,缺点是启动速度还是不够快,没达到秒开的效果。
第二种伪布局的做法(主流做法):也是把主题设置到启动Activity上,用`@mipmap/splashbg`设置默认图片为splashbg。点击图标后马上加载窗口并显示背景图,瞬间启动的感觉就有了。(ps:这张图是我临时做的,别嫌弃哈)
还有一个小技巧,可以把application中的初始化放到单独线程里处理,方便管理的话可以用IntentService来做初始化工作。service是在主线程中运行,而intentService是在后台线程中跑的,在application里启动intentservice。或者直接用协程切换到子线程进行初始化操作。
好了,功能实现完了,喜欢的话就点个赞吧!
问题来了,还没加载布局文件,窗口背景就已经显示出来了,黑屏白屏就是这么来的。布局还没出来,窗口是白色,咋整?
这里有俩解决办法:
1. 让窗口透明,这样启动的时候就看不到那个烦人的白屏了。
2. 给窗口加个背景图,一进来就能看到,白屏不就解决了嘛。
先说第一种透明的方法:把主题设置到启动Activity上,用`@android:color/transparent`让背景透明。效果就是点开图标后虽然启动了,但是窗口透明,没有白屏,缺点是启动速度还是不够快,没达到秒开的效果。
第二种伪布局的做法(主流做法):也是把主题设置到启动Activity上,用`@mipmap/splashbg`设置默认图片为splashbg。点击图标后马上加载窗口并显示背景图,瞬间启动的感觉就有了。(ps:这张图是我临时做的,别嫌弃哈)
还有一个小技巧,可以把application中的初始化放到单独线程里处理,方便管理的话可以用IntentService来做初始化工作。service是在主线程中运行,而intentService是在后台线程中跑的,在application里启动intentservice。或者直接用协程切换到子线程进行初始化操作。
好了,功能实现完了,喜欢的话就点个赞吧!