@Tyhj
2018-05-12T19:51:16.000000Z
字数 1294
阅读 1295
Android
原文链接:https://www.zybuluo.com/Tyhj/note/1144921
最近接手一个项目需要优化,最大的问题就是卡顿和启动慢,所以看了一下APP快速启动方面的东西,其实也没什么,只要自己习惯好一点一般都是没有问题的。
首先要注意的地方就是MyApplication.onCreate方法里面不要做超时的操作,一些第三方SDK可以多线程来加载
同样的MainActivity.onCreate方法也不能做耗时的操作,有些操作可以在MainActivity.onResume里面操作
APP启动一般的流程就是点击,然后画面变白,然后首页出来。
点击画面变白这个可以优化一下,在项目创建时,系统会为launcherActivity默认了一个LightTheme,这样就会导致App点击启动后会白屏一段时间然后展示自己的Activity,为了解决白屏的问题把启动的界面theme主题换成透明的
<style name="Quick_start_Light" parent="Theme.AppCompat.Light">
<item name="android:windowBackground">@color/translate</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowFullscreen">true</item>
</style>
然后的确没有白屏了,但是体验更差,因为点击后到主界面的时间没有变,但是屏幕一直没反应,感觉就是反应更慢了。
可以把其中的windowBackground设置为一张图片,类似logo什么的展示界面,这样感觉就是一点击就进入了APP,然后还需要一点点优化,首先在theme中设置全屏,避免状态栏的出现,然后进入启动Activity后重新设置回APP的theme
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
APP启动方法我觉得有三种
冷启动:就是进程被干掉,需要新开进程进行一系列初始化,最耗时间
热启动:Home键后重新进入APP
暖启动:finish()栈底的Activity后再进入APP,也有可能被系统杀掉
可以做的就是把暖启动变为热启动
@Override
public void onBackPressed() {
if (System.currentTimeMillis() - lastClickTime > 2000) {
lastClickTime = System.currentTimeMillis();
toast("再次点击退出");
return;
}
//常用的方法
finish();
//热启动
//moveTaskToBack(true);
}
还有就是系统自身的问题了,现在的很多手机厂商的系统都是优化过的,可以做到快速启动APP,不过有些就不一定了