1什么是冷启动
冷启动是指从用户点击app图标到第一个Acitivity的onCreate()方法执行完毕这段时间程序所进行的活动。
2冷启动都做些什么
当用户点击图标,Lnuix给APP创建独立进程,WindowManager会先加载APP里的主题样式里的窗口背景(Android:windowBackground)作为预览元素,Application和默认启动的Activity创建并初始化,然后加载默认启动的Activity布局并替换掉预览元素,启动完成。
3冷启动的优化方向:
1>尽量不要在Application的onCreate()方法中执行耗时操作和太多业务逻辑
2>尽量不要在默认启动的Activity的onCreate()方法中执行耗时操作和太多业务逻辑
3>默认Activity中加载布局不要太复杂,布局加载和渲染需要时间
4>如果上述1、2和3不能满足需求,借助动态修改主题,实现效果上的秒启
具体操作如下:
(1)自定义主题,把背景设置成App的logo
<style name="myTheme" parent="AppTheme"> <item name="android:windowBackground">@drawable/logo2</item> </style> (2)在AndroidManifest文件中设置自定义主题,为了主题更好的兼容性,默认启动的activity继承Activitty <application android:name=".myAppContext" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/myTheme"> (3)默认启动activity中的耗时处理(用线程睡眠模拟耗时任务)完成后,把主题设置成系统主题 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { Log.e("test", "ActivityonCreate: " ); Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } setTheme(R.style.AppTheme); setContentView(R.layout.activity_first); } 通过上面三步,就实现了在Application的onCreate()方法和Activity的onCreate()方法执行耗时操作时,一直显示App的logo,执行完毕,Logo图片被默认Activity的布局代替效果。从而实现视觉上的秒启,微信就这么干。
