Android 系统启动流程和黑白屏问题

Android性能优化之APP 启动优化(不敢说秒开,但是最终优化完真不到 1s) 首先为什么会造成白屏勒我们来看一段源码最后就是这个 windowBackground 搞的鬼,知道了是这个搞的鬼那么我们就可以来进行优化了。 阅读详情
                     android 黑白屏问题总结

 1.Android APP 在启动的时候会有黑白屏的问题,主要是由手机性能和APP 应用启动时加载有关系。

手机启动过程:
手机开机 —BootLoader 镜像加载 —Lunix kernel 虚拟机开启 —加载 init.rc 文件 — 创建 zygote (孵化器) 进行fork 进程 — 首先进行fork出systemService — 创建出binder线程池 systemServiceManger ---- 系统服务创建 (AMS WMS PMS CamerService SensorService)

系统启动流程

1.打开电源 引导芯片代码加载引导程序 BootLoader 到am 中执行
2.Bootloader 把操作系统拉起
3.liunx 内核启动系统设置 找到init.rc 文件启动初始化进程
4.init 进行初始化 和启动属性服务,之后开启zygote 进程
5. zygote 开始创建jvm 并注册jni 方法,开启systemServier
6. 开启binder线程池和systemservicemanger 并开启各种服务
7. Ams 启动luncher

Launch 启动

1.如何查看当前的activity
adb shell dumpsys activity activities 查看当前的activity名
2,查看进程
adb shell ps
3. Luncher 点击类 : Launcher.java
当我们用手点击一个图标时: 就会在执行 Launcher.java 中的onclick 方法,
会通过一个intent 将我们的应用信息传入 AMS 中
在ams 中会进行判断 在内存中是否已经存在,,如果存在 则直接调用内存堆栈中的数据,不存在则 需要 通过zygote 进行fork 一个system service 通过 activityThread main 方法中直接调用application 中oncreate 的方法和mainActivity的oncreate 的方法

startActivity (intent )会开一个APP进程

ActivityThread.java 作为入口,用attach 开启APP ,在加载 application 和activity

thread.attach(false) —>mgr.attachAppliction(mAppThread) 会通过远端进程进行回掉,private void handleBindAppliaction(AppBndData data)
Application app = dataInfo.makeApplication 创建application对象

黑白屏问题,主要是style 文件中,, 我们对应的启动页面设置了主题

白屏 <style name =“App.theme”,parent =“Theme.appCompat.light”>
黑屏

解决方案:

伪处理:
1.找到父类主题中定义的 用来控制黑白屏
2.将windowBackground 设置为透明状态
3,单独做一个主题 ,设置background的颜色,再在功能清单中的单独Activity 下设置 当前的主题,这样让APP中其他的还是使用之前的,只是启动页面设置的是我们自己设置的主题

QQ中的做法是:
true
@null

真正处理:

trace工具分析代码执行时间

Debug.startMethodTrace(filepath)
中间为需要统计代码的执行时间
Debug.stopMethodTrace();

将生成的文件从手机中导出,然后拖入as中进行分析

优化方案有:
1.开启子线程: 没设置handle 没操作UI,对异步要求不高
2.懒加载: 用的时候再进行初始化,如网络,数据库

Android 启动优化说明、黑白屏处理(1) 前言正文在Android App使用过程中,对于应用的优化是一个加分项,举个例子,打开你的App需要2秒,人家0.5秒,这就是很大的用户体验上的优化。当然了目前我没见过有启动的这么快的App,因为什么呢?因为App在启动的时候做的事情太多了,这是对于那些商业的App来说,自己的App可以这么高,提升使用,首先我们来想一下启动优化。一、启动来历这个启动优化最开始并不是用在App上的,是在网页上的,在零几年的时候,那时候的电脑还是那种大而笨重的电脑。 阅读详情

相关推荐

(一)Android 黑白屏由来以及解决方案

子曰:温故而知新,可以为师矣。 《论语》– 孔子 作为 性能优化 系列章节的第一篇,我们就来说一说 Android 黑白屏 的历史由来以及如何解决。 一、APP的三种启动方式 1. 冷启动: 程序从头开始,系统没有为该程序创建进程。一般场景:程序安装后的第一次启动 或者 应用程序被系统完全终止后再打开。 2. 热启动: 程序任然驻留在内存中,只是被系统从后台带到了前台,因此程序可以避免对象重复初始化,加载布局和渲染。需要注意的是:如果程序的某些内存被系统清除了,则需要重新创建这些对象以响应热启动事件。 3. 暖启动: 它包含热启动和冷启动一系列操作子集,比热启动的消耗稍微多一些。它与热启动

Android 黑白屏由来以及解决方案

子曰:温故而知新,可以为师矣。 《论语》-- 孔子 作为 性能优化 系列章节的第一篇,我们就来说一说 Android 黑白屏 的历史由来以及如何解决。 一、APP的三种启动方式 1. 冷启动: 程序从头开始,系统没有为该程序创建进程。一般场景:程序安装后的第一次启动 或者 应用程序被系统完全终止后再打开。 2. 热启动: 程序任然驻留在内存中,只是被系统从后台带到了前台,因此程序可以...

孔维伟的博客 5093

Meta DINOv3实战指南:如何用7B参数ViT模型搞定图像分割与检测(附Hugging Face配置)

本文提供了Meta DINOv3模型的实战应用指南,重点介绍了如何利用这个7B参数的视觉Transformer模型进行图像分割与目标检测。通过详细的Hugging Face配置步骤、环境搭建、模型加载与推理优化,帮助开发者快速上手这一强大的自监督视觉模型,并高效应用于实际计算机视觉任务中。

s3t4u的博客 907

Android 应用启动时出现黑白屏问题分析及解决办法

目录 前言 一、案件重演 二、原因分析 三、解决方案 前言 在日常Android项目开发工作中,我们经常会遇到一种小情况,就是点击应用桌面图标后会出现片刻的黑屏效果。虽然这种情况并不是一个bug,也不是人为造成的结果,但这样总归会觉得是我们的应用启动缓慢和运行卡顿。当用户觉得这款应用不流畅,即降低用户体验,造成用户流失就是公司的损失了。因此,本章就来搞清楚这种情况是怎么回事,如何解决这...

csdn_aiyang的博客 3181

ORACLE 12C RAC 启动报错,错误代码 ORA-27300,ORA-27301,ORA-27302

非一体机,12.2 无任何补丁,2套X86服务器,1节点集群异常(数据库正常,还有会话),2节点正常工作,负载不高,硬件、空间均未检查到异常,多路径存在掉线的情况,但通过Mulitpath -ll 看又是正常的,2根私有网络,其中一根不同,sysctl中配置的稀疏模式。5、再次加成crs alert ohas等集群日志,以及根据现象和错误再次到后台sr中查找可用信息,发现有一个类似问题,12.2 RAC 无任何补丁,报同样错误,解决方案为重启两套服务器。查询MOS文档以及后台文档,排除上面指出的问题。

weixin_42344665的博客 1465

大数据审计常用的算法模型

数据预处理:用聚类算法(K-Means)对数据分组,缩小分析范围;异常初筛:用孤立森林/DBSCAN快速标记疑似异常样本;风险分级:用随机森林/XGBoost对疑似异常打分,确定核查优先级;关联深挖:用FP-Growth挖掘异常样本背后的人员/流程关联;文本佐证:用BERT分析相关合同/审批文本,获取舞弊证据。例如,某审计项目通过“K-Means分组→孤立森林标异常→FP-Growth找关联→BERT审合同”的流程,仅用1周就完成了过去3个月需10人团队的工作量,且挖出2起隐藏的串标舞弊案。

Yulay专栏 1069

Anroid 性能优化之一:黑白屏的产生和优化

来点前奏说明 当你打开这个文档的时候,你已经做好准备了,话不多说开搞。 1、黑白屏产生原因: 在AndroidManifest.xml的Application的theme没有配置主题就是黑屏,配置了就是白屏。市面上App有些还是可以看到的黑白屏的,光大银行白屏、个人所得税黑屏。。。 白屏寻找之路 1.找到style的AppTheme(我的是这个,使用默认的) 2.点父样式,一直点父...

张彬的博客 521

同济土木非0基础三个月跨考复旦计算机攻略

跨考cs攻略前言我cs专业课如何复习How to start from zero简历其他复试 前言 建议多去工地/化工厂涡轮增压一下 我 同济土木gpa 3.2/5 挂科 * n 辣鸡项目 * n (padding 简历) 21考复旦计算机专硕 10月-12月 学习+复习 总分392 政治 68;背肖4即可 英语二 78 裸考,(高考英语140+);做点真题,建议据自己情况准备 数学二 142 ;(高考数学接近满分);做真题+模拟题,每天写一张试卷 专业课 104 ,考试生病了,下文展开。 cs专业课

piglake的博客 7238

Android 启动优化说明、黑白屏处理

启动对于安装来说,有两种,一种就是Android系统的启动,一种就是App应用的启动。Android系统启动就是手机启动,整个过程就是手机开机到进入手机桌面,里面的流程是这样的:上电(开机)BootLoader (系统引导芯片唤起)Init进程 (ID为1)Zygote进程ART,SystemServer等系统服务Binder(线程池)SSM(系统消息)、AMS(启动App)、PMS(包管理)等各种系统服务Launcher(手机系统桌面)下面就是App的启动,这也是文章中主要说明的。

2301_79985012的博客 1081

wxComboBox类的使用方法及示例代码

其中,parent表示该控件的父窗口,ID_COMBOBOX是该控件的ID,用于在事件处理函数中区分不同的控件,"默认选项"是下拉列表框的默认选项,options是wxArrayString类型的数组,用于存储下拉列表框中的选项,style可以指定wxComboBox的样式。wxComboBox是wxWidgets中的一个常用控件,它可以被用来显示一组在下拉列表框中的选项,并允许用户从中选择一个选项。上述就是wxComboBox类的基本使用方法,使用这个控件可以方便地实现下拉列表框的功能。

学习使你进步。 713

华为OD机考双机位C卷 - 信道分配(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 信道分配

算法大师! 453

APP启动优化和Trace分析工具

文章目录android系统启动流程Launcher(Application)启动黑白屏问题Trace工具分析代码执行时间开启Trace并设置文件路径trace文件查看 android系统启动流程 打开电源 引导芯片代码加载引导程序Boot Loader到RAM中去执行 BootLoader把操作系统拉起来 Linux 内核启动开始系统设置,找到一个init.rc文件启动初始化进程 init...

The blog of 优快云 in 杨天福 6134

EPLAN中2D安装板的绘制方法示例

EPLAN中2D安装板的绘制方法示例

Robot_PLC_HMI_Automation 3221

性能优化(一)APP 启动优化之启动流程

简介 性能优化的目的不是为了优化而优化,而且为了以后不再优化, 给自己统一 一个标准。 这里也许会有人问 APP 启动还需要优化吗?启动又不是我们自己写的代码,难道 Google 工程师会犯这么低级的错吗?其实这还真不是 Google 的错,应该说是给我们开发者留了一个坑吧。应该有的同学知道是怎么一回事儿了,当我们在系统桌面任意点击一个 APP 是不是会发现启动的时候有一瞬间有白屏出现(以前老版本...

Aerfa789的博客 353

RT-DETR-R18 上下文信息融合:引入全局特征提升遮挡目标检测

"""轻量化全局特征提取器(2层Transformer编码器)"""# 特征投影层(将多尺度特征统一维度)# 轻量化Transformer编码器(分组卷积优化)# 全局特征池化(输出 [bs, hidden_dim])# local_features: 多尺度特征列表 [C3, C4, C5],各 [bs, c, h, w]# 统一投影至 hidden_dim 并展平为序列# Transformer编码全局上下文# 全局池化得到全局向量。

走向CTO的路上... 496

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android APP启动优化

APP启动流程 系统的启动 1.打开电源 引导芯片代码加载引导程序Boot Loader到RAM中去执行 2.BootLoader把操作系统拉起来 3.Linux 内核启动开始系统设置,找到一个init.rc文件启动初始化进程 4.init进程初始化和启动属性服务,之后开启Zygote进程 5.Zygote开始创建JVM并注册JNI方法,开启SystemServer 6.启动Binder线程沲...

hongxue8888的博客 556

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

性能优化(一)APP 启动优化(不敢说秒开,但是最终优化完真不到 1s)

简介 性能优化的目的不是为了优化而优化,而且为了以后不再优化, 给自己统一 一个标准。 这里也许会有人问 APP 启动还需要优化吗?启动又不是我们自己写的代码,难道 Google 工程师会犯这么低级的错吗?其实这还真不是 Google 的错,应该说是给我们开发者留了一个坑吧。应该有的同学知道是怎么一回事儿了,当我们在系统桌面任意点击一个 APP 是不是会发现启动的时候有一瞬间有白屏出现(以前老版本...

weixin_44339238的博客 359

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android性能优化1-----启动优化

1、手机的启动 打开电源-----通过BootLoader将Linux系统拉起-----配置网络、文件等等引导页面 ------Linux启动 init进程-------Zygote进程创建JVM -----开启SystemServer,打开Binder线程池和SystemServiceManager ------由这些服务开启ActivityManagerService、WindoeManage...

qq_33235287的博客 378
下一篇: android消息机制总结
qq_32030555
博客等级 码龄11年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值