美文网首页
App白屏和启动优化的一些思路

App白屏和启动优化的一些思路

作者: binlees | 来源:发表于2022-03-21 16:58 被阅读0次

App启动优化

App启动优化原理与技术方案
启动优化

黑白屏问题

  1. 启动页面主题设置为图片
  2. 启动页面,不要再onCreate生命周期写太多内容
  3. 启动页面做一个动画先展示(伪优化)
  4. 在Main主页面的onCreate生命周期,不写代码或者在这个生命周期能只允许耗时200ms左右。
  5. 把初始化的动作写在onWindowFocusChanged()里面,懒加载()和预加载()
  6. View UI布局优化,viewgroup层次,过度绘制
  7. 代码质量上的优化

补充一下

开机------->>桌面------->>App运行

http://androidxref.com/

参考[https://www.jianshu.com/u/167b54662111]

Android系统初始化 --(调用)-->>BootLoader 启动Linux系统(init.rc) /system/core/init/init.cpp中main方法LoadBootScripts(am, sm);方法专门加载脚本文件。/system/core/rootdir/init.rc
-->>trigger zygote-start zygote进程(注册JVM创建虚拟机 JNI)

开启zygote进程之后,开启SystemServer-->>打开SystemServiceManager,binder线程池的启动等。

在zygote进程、SystemServer和SystemServiceManager三个的共同作用下,去拉起AMS(activity manager service)、WMS(window manager service)、PMS(package manager service)、camera服务和传感器服务等等。

AMS-->>Launcher.java启动桌面 -->>startActivity(冷启动、热启动)-->>zygote进程 fork一个ActivityThread.java

ActivityThread.java main->

ActivityThread thread = new ActivityThread();
thread.attach(false, startSeq);

final IActivityManager mgr = ActivityManager.getService();
try {
    mgr.attachApplication(mAppThread, startSeq);
}catch (RemoteException ex) {
throw ex.rethrowFromSystemServer();
}

//继续调用创建Application
handleBindApplication(AppBindData data)

//调用app的onCreate方法
mInstrumentation.callApplicationOnCreate(app);

//启动Activity,后面这里拿到activity对接开始进行调用activity的生命周期attach
private Activity performLaunchActivity();

Zygote是java层的进程即它也拥有一个独立的Dalvik 虚拟机实例,它是被linux层的第一个用户空间Init进程所启动的,它的主要作用就是用来孵化app进程和系统进程。

android系统的Zygote进程是所有的android进程的父进程,包括SystemServer和各种应用进程都是通过Zygote进程fork出来的。Zygote(孵化)进程相当于是android系统的根进程,后面所有的进程都是通过这个进程fork出来的,而Zygote进程则是通过linux系统的init进程启动的,也就是说,android系统中各种进程的启动方式

init进程 –> Zygote进程 –> SystemServer进程 –>各种应用进程

init进程:linux的根进程,android系统是基于linux系统的,因此可以算作是整个android操作系统的第一个进程;

Zygote进程:android系统的根进程,主要作用:可以作用Zygote进程fork出SystemServer进程和各种应用进程;

SystemService进程:主要是在这个进程中启动系统的各项服务,比如ActivityManagerService,PackageManagerService,WindowManagerService服务等等;

packages/apps/Provision/src/com/android/DefaultActivity.java

默认launcher frameworks/base/core/java/com/android/internal/app/ResolverActivity.java

setDefaultLauncher

大概的图,画的有点乱,不要介意

相关文章

  • App白屏和启动优化的一些思路

    App启动优化 App启动优化原理与技术方案 启动优化 黑白屏问题 启动页面主题设置为图片 启动页面,不要再onC...

  • Android项目优化-冷启动优化

    APP启动优化主要解决app启动缓慢,白屏半天的问题。 app启动方式主要为:冷启动和热启动 冷启动:当进程关掉,...

  • Android 启动优化

    一、 启动白屏优化 解决启动白屏问题再启动app时展示一张静态图 ,实现方法是 给splash页面设置theme...

  • Android性能优化-App启动优化

    一、App启动优化 问题如下:1、App启动白屏、或者黑屏2、App启动时间长 二、解决方法1 通常的解决办法都是...

  • Android性能优化面试题汇总

    启动黑白屏 安装app后,启动时会有短暂的白屏,这大大影响整体的美观,姑且在这里也给算在性能优化这一块 出现白屏原...

  • App 启动 优化

    技术点: 1、传说中的黑白屏问题优化 2、黑白屏在商业App中的价值 3、App启动流程 4、如何使用Tracev...

  • Android高级进阶之-性能优化-黑白屏问题

    启动优化 优化思路:APP通过ActivityThread开始,调用Application.onCreate(),...

  • App启动优化(三)启动优化方案

    系列文章 App启动优化(一)冷启动和热启动 App启动优化(二)启动时间测量 App启动优化(三)启动优化方案 ...

  • 优化Android App启动白屏

    问题描述 随着Android App开发时间越来越长,项目中的功能,以及用到的第三方库也越来越多,apk的体积也会...

  • Android APP启动白屏优化

    概述 android开发者应该都有这样的体会:开发到一定的阶段,包变得很大了,每次启动APP的时候,总是有白屏一闪...

网友评论

      本文标题:App白屏和启动优化的一些思路

      本文链接:https://www.haomeiwen.com/subject/doprmltx.html