Android学习之启动优化详解
来源:互联网 发布:冬天通勤穿 知乎 编辑:程序博客网 时间:2024/06/03 16:42
本文和大家分享的主要是android 启动优化相关内容,一起来看看吧,希望对大家 学习android开发有所帮助。
应用的启动方式
· 冷启动
· 当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用。
· 系统会先创建和初始化 Application 类,再创建和初始化 LauncherActivity 类(包括一系列的测量、布局、绘制),最后显示在界面上。
· 热启动
· 当启动应用时,后台已有该应用的进程(例:按 back 键、 home 键),应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看,所以在已有进程的情况下,这种启动会从已有的进程中来启动应用。
· 热启动因为会从已有的进程中来启动,所以热启动就不会走 Application 这步了,而是直接进入Activity 。
冷启动的启动过程分析
当点击app 的启动图标时,安卓系统会从 Zygote 进程中创建出一个新的进程分配给该应用,之后会依次创建和初始化 Application 类、创建 LauncherActivity 类、加载主题样式中的 windowBackground 等属性设置给 LauncherActivity ,然后配置 Activity 层级上的一些属性、再加载布局显示。
应用的启动流程如下:Application 的构造器方法 ——>attachBaseContext()——>onCreate()——>Activity 的构造方法 ——>onCreate()——> 配置主题中背景等属性 ——>onStart()——>onResume()——> 测量布局绘制显示在界面上
冷启动过程中的白屏问题
当用户点击图标启动应用到应用首界面显示,有时候会出现一段白屏或黑屏时间。原因大致有两方面:其一,在Application 或 Activity 的 onCreate 方法中,加载资源耗时较长。其二,页面布局相对复杂,渲染画面花费较长时间。
白屏的解决办法
· 资源加载
· 首先尽量避免将耗时操作直接写在 Application 的 onCreate() 中,可以采用异步或者 IntentService 的方式加载资源。
· 不要以静态变量的方式在 Application 中保存数据
· 画面渲染
· 为启动的 Activity 自定义一个 Theme ,指定一个闪屏画面相同的背景图片
<style name="AppSplash">
<item name="android:windowBackground">@mipmap/splash_bg</item>
</style>
· 将新的 Theme 应用到设置到 AndroidManifest.xml 中 LauncherActivity 中
<activity android:name=".MainActivity"
android:theme="@style/AppWelcom">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
· 在 MainActivity 中需要设置回原来的 Theme
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
来源:简书
阅读全文
0 0
- Android学习之启动优化详解
- Android之启动页优化
- Android详解之ListView优化
- Android之Zygote启动详解
- Android之Zygote启动详解
- android项目性能优化之启动时间
- Android性能优化之启动加速
- Android 性能优化之应用启动
- Android性能优化之启动加速
- Android学习之性能优化
- Android学习之布局优化
- Android学习之 启动模式
- Android性能优化系列之App启动优化
- Android性能优化系列之App启动优化
- Android 性能优化系列之 App 启动优化
- Android性能优化系列之App启动优化
- Android性能优化系列之App启动优化
- Android性能优化之App应用启动分析与优化
- JVM高级特性与实践(九):类加载器 与 双亲委派模式(自定义类加载器源码探究ClassLoader)
- 让你快速上手Runtime
- 快速编译system.img和boot.img的方法
- 关于批量插入数据之我见(100万级别的数据,mysql)
- 使用vue-router切换页面时,获取上一页url以及当前页面url
- Android学习之启动优化详解
- C++中智能指针的设计和使用
- Python数据分析之pandas统计分析
- 简单的公历万年历
- SpringBoot直接读取默认属性文件application的两种方式
- C# IEnumerable集合转为DataTable
- Java多态
- linux系统下磁盘空间被”无形”占用的问题
- Qt之Modbus协议