Android应用程序冷启动优化
2017-04-13 16:38
204 查看
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的布局代替效果。从而实现视觉上的秒启,微信就这么干。
冷启动是指从用户点击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的布局代替效果。从而实现视觉上的秒启,微信就这么干。
相关文章推荐
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- android性能优化学习笔记(加快应用程序启动速度:)
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- 浅谈Android开机启动速度优化(含应用程序启动速度优化
- Android中style和theme巧用:Android应用程序启动时背景画面的切换
- Android定时自动启动应用程序
- Android应用程序启动过程源代码分析(2)
- Android应用程序启动过程源代码分析(1)
- Android在开机时自动启动一个应用程序
- Android应用程序的Activity启动过程简要介绍和学习计划
- android开发——应用程序启动前的闪屏实现
- Android在开机时自动启动一个应用程序
- Android应用程序的Activity启动过程简要介绍和学习计划