开发的时候,常常会遇到apk启动缓慢的问题。已经有很多文章讲解优化apk启动速度的问题。肯定也会有人想,可以在后台预先启动apk,当用户真正要使用这个apk的时候,系统只需要调到前台,启动速度自然是最快的。
首先要说的是,这种思路并不能根本解决问题。因为系统内存紧张的时候,预先启动的apk会被回收掉。当客户真正要使用的时候,启动依然是慢的。
虽然如此,在后台预先启动一个apk,在某些场景还是有用的。这里要介绍的就是,怎么预先在后台启动一个apk。重点是,如何后台启动apk而不干扰用户的前台行为。
- apk启动后放到后台。可以在activity的onCreate的末尾调用moveTaskToBack(true),那么activity在启动后就主动把自己放到后台。不干扰用户的前台操作。
- 在启动的一瞬间有界面弹出。可以做一点伪装!给启动的activity设置一个theme皮肤,皮肤里面设置一个窗口背景。
<item name="android:windowBackground">@drawable/preload_bg</item>
其实,activity启动的瞬间,弹出的界面是这个theme皮肤的窗口背景。可以把这个背景设置成一张图片,内容是“正在启动”之类的信息。然后,在acitivity的真正内容出现以前,由于moveTaskToBack的调用,activity会被放到后台。
那么,用户看到的就只是一个“正在启动”的弹窗,并不会知道启动了什么。甚至根本感觉不到有离开过当前activity,从而达到后台预启动activity,和伪装的效果。