Android 14 开机时间优化措施
Android开机优化系列文档-CSDN博客
- Android 14 开机时间优化措施汇总-CSDN博客
- Android 14 开机时间优化措施-CSDN博客
- 根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客
- Android系统上常见的性能优化工具-CSDN博客
- Android上如何使用perfetto分析systrace-CSDN博客
- Android系统设置kernel log level的方法-CSDN博客
- Android14系统应用统一裁剪方案_android 开机 服务 裁剪-CSDN博客
- Android系统上Bootchart的使用_android bootchart-CSDN博客
- Android init.rc如何并行执行任务-CSDN博客
- Android init常用调试工具-CSDN博客
- 如何识别Android init 中的缓慢操作-CSDN博客
- Android init 中的wait_for_property指令-CSDN博客
Android 14 开机时间优化措施
在Android 14中,优化开机时间涉及多个层级的性能优化,从系统启动到应用加载的每一个阶段都可能影响最终的开机时间。以下是详细的措施和策略,可以帮助我们在Android 14设备上进行开机时间优化。
1. 优化引导过程
1.1 减少启动的服务和应用
措施:
-
精简开机启动项:通过
init.rc
文件优化启动服务。移除不必要的服务或将它们从开机启动中移除。
# init.rc 示例
# 移除不必要的服务
# service unneeded_service /system/bin/unneeded_service
# ...
-
优化
init.rc
配置:检查和优化init.rc
文件中的服务配置。
service myservice /system/bin/myservice# service 配置示例user systemgroup systemoneshot
-
优化
init
文件中的on boot
事件:减少在引导过程中启动的应用和服务。
on bootstart myservice
参考资料:
-
Android Init System
1.2 精简系统服务
措施:
// SystemServer.java 示例
private void startSystemServices() {// 移除不必要的服务// addService(IAccountManager.Stub.asInterface(service));// ...
}
-
检查
SystemServer
启动服务:优化SystemServer
启动的服务。
参考资料:
-
SystemServer.java 代码
2. 优化启动时的应用
2.1 优化应用启动
措施:
-
延迟加载不必要的功能:延迟加载不必要的功能,减少启动时的计算和处理。
// 延迟初始化示例
new Handler().postDelayed(() -> {// 延迟执行的任务
}, 5000);
-
优化
onCreate
方法:在Activity
的onCreate
方法中,避免执行耗时操作,使用异步任务处理复杂逻辑。
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);new AsyncTask<Void, Void, Void>() {@Overrideprotected Void doInBackground(Void... voids) {// 执行耗时操作return null;}}.execute();
}
-
使用
JobScheduler
和WorkManager
:将后台任务调度移到JobScheduler
或WorkManager
中。
JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo jobInfo = new JobInfo.Builder(jobId, componentName).setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).build();
jobScheduler.schedule(jobInfo);
参考资料:
-
JobScheduler
-
WorkManager
3. 优化系统组件
3.1 优化启动时的内核初始化
措施:
-
优化内核启动参数:调整内核启动参数以提高启动性能。
# /system/etc/kernel/cmdline 示例
console=ttyHSL0,115200n8 androidboot.hardware=generic_x86
-
精简内核模块:移除不必要的内核模块。
# /system/lib/modules/ 下移除不必要的模块
# 删除未使用的模块
参考资料:
-
Kernel Command Line Parameters
3.2 优化系统资源管理
措施:
-
优化内存管理:优化内存分配策略以提高系统性能。
// 调整内存分配
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.setMemoryClass(memoryClass);
-
减少启动时的资源加载:减少应用启动时加载的资源。
// 减少资源加载
ImageView.setVisibility(View.GONE);
参考资料:
-
ActivityManager
-
内存管理
4. 优化应用程序启动
4.1 使用 Profile GPU Rendering
措施:
-
Profile GPU Rendering 工具:通过
Profile GPU Rendering
工具查看和优化应用的GPU渲染时间。
# 打开 GPU 渲染工具
adb shell dumpsys gfxinfo com.example.app
参考资料:
-
Profile GPU Rendering
4.2 优化 onResume
和 onPause
生命周期方法
措施:
-
优化生命周期管理:避免在
onResume
和onPause
方法中执行耗时操作。
@Override
protected void onResume() {super.onResume();// 移除耗时操作
}@Override
protected void onPause() {super.onPause();// 移除耗时操作
}
参考资料:
-
Activity Lifecycle
5. 分析启动时间
5.1 使用 Systrace
分析启动时间
措施:
-
生成和分析 Systrace 文件:使用
Systrace
工具生成启动时间的性能数据。
adb shell systrace -a com.example.app -o /path/to/trace.html
-
分析启动时间:使用
Systrace
工具分析启动时间中的性能瓶颈。
参考资料:
-
Systrace
5.2 使用 Android Studio Profiler
措施:
-
使用 Profiler 分析开机性能:利用
Android Studio Profiler
分析开机过程中的性能数据。
# 打开 Profiler 工具
View > Tool Windows > Profiler
参考资料:
-
Android Studio Profiler
6. 硬件层优化
6.1 优化硬件加速
措施:
-
硬件加速配置:启用硬件加速来提升性能。
<applicationandroid:hardwareAccelerated="true"...>
参考资料:
-
硬件加速
6.2 升级硬件组件
措施:
-
升级硬件:如果可能,升级设备的硬件组件,如CPU、GPU和内存,以提高开机时间。
参考资料:
-
Android 硬件组件
7. 网络优化
7.1 延迟加载网络请求
措施:
-
将网络请求移到后台线程:延迟加载网络请求以减少开机时的网络延迟。
new Thread(() -> {// 执行网络请求
}).start();
参考资料:
-
Android 网络请求优化
8. 缓存优化
8.1 使用缓存减少启动时间
措施:
-
在启动时加载缓存:使用缓存机制减少启动时的数据加载时间。
// 缓存示例
SharedPreferences sharedPreferences = getSharedPreferences("app_prefs", MODE_PRIVATE);
String cachedData = sharedPreferences.getString("cached_key", null);
参考资料:
-
缓存机制
9. 分析和优化开机日志
9.1 使用 logcat
分析开机日志
措施:
-
分析
logcat
输出:检查开机过程中的日志信息,找出潜在的性能瓶颈。
adb logcat -d > boot_log.txt
参考资料:
-
logcat
相关文章:
Android 14 开机时间优化措施
Android开机优化系列文档-CSDN博客 Android 14 开机时间优化措施汇总-CSDN博客Android 14 开机时间优化措施-CSDN博客根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客Android系统上常见的性能优化工具-CSDN博客Android上如何使用perfetto分析systrace-CSDN博客A…...
【QGroundControl二次开发】二.使用QT编译QGC(Windows)
【QGroundControl二次开发】一.开发环境准备(Windows) 二. 使用QT编译QGC(Windows) 2.1 打开QT Creator,选择打开项目,打开之前下载的QGC项目源码。 编译器选择Desktop Qt 6.6.3 MSVC2019 64bit。 点击运…...
[C/C++入门][变量和运算]4、带余除法
给定被除数和除数,求整数商及余数 看到这个题,我们都知道C的除法运算符 /,默认是不带余数的。那现在要求带余数,需要能够想到% %,是C获取余数的方法:比如5/22; 5%21;%得到的是除后的余数。 #inc…...
常用优秀内网穿透工具(实测详细版)
文章目录 1、前言2、安装Nginx3、配置Nginx4、启动Nginx服务4.1、配置登录页面 5、内网穿透5.1、cpolar5.1.1、cpolar软件安装5.1.2、cpolar穿透 5.2、Ngrok5.2.1、Ngrok安装5.2.2、随机域名5.2.3、固定域名5.2.4、前后端服务端口 5.3、NatApp5.4、Frp5.4.1、下载Frp5.4.2、暴露…...
防火墙NAT地址转换和智能选举综合实验
一、实验拓扑 目录 一、实验拓扑 二、实验要求(接上一个实验要求后) 三、实验步骤 3.1办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 3.2分公司设备可以通过总公司的移动链路和电信链路访…...
Android获取当前屏幕显示的是哪个activity
在 Android 中,要获取当前屏幕显示的 Activity,可以使用以下几种方法: 方法一:使用 ActivityManager 获取当前运行的任务信息 这是一个常见的方法,尽管从 Android 5.0 (API 21) 开始,有些方法变得不太可靠…...
JVM:自动垃圾回收
文章目录 一、C/C的内存管理二、Java的内存管理1、方法去的回收2、堆回收(1)引用计数法和可达性分析法(2)五种对象引用(3)垃圾回收算法 一、C/C的内存管理 在C和C没有自动垃圾回收机制,一个对象…...
【填坑指南】PHP8报:Unable to load dynamic library ‘zip.so’ 错误
1.原因分析 这种情况多数发生在PHP安装时因为各种原因失败后,残余的库与最后安装的PHP版本不兼容导致的。 2.我的路径 一开始我按照以前摸索出来的安装PHP7.3的成功经验来编译方法安装PHP8.3,发现以前的套路已经失效了。反复重装PHP8.3失败后…...
鸿蒙语言基础类库:【@system.notification (通知消息)】
通知消息 说明: 从API Version 7 开始,该接口不再维护,推荐使用新接口[ohos.notification]。本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import notification fro…...
1.JavaWeb开发简介(Tomcat安装使用+Servlet简介)
文章目录 一.web开发简介1.概念:2.特点:3.常用技术:4.服务架构5.web应用开发模式6.HTTP协议1)概念:2)HTTP最基本的过程是:3)IP/域名4)HTTP协议请求方式 7.JavaWeb的相关技术8.Java Web服务器 二、安装配置Tomcat1.简介2.Tomcat目录结构 三.Servlet的入门应用1.使用步骤2.使用注…...
xxl-job 动态创建一次性定时任务
文章目录 需求一、考虑方案二、实现思路三、代码实现3.1 引入xxl-core 核心包3.2 远程调用3.2.0 yaml3.2.1 配置类3.2.2 入参3.2.3 任务返回实体3.2.4 任务调用 3.3 cron生成器3.4 handler实现3.4 测试 踩坑 需求 类似预约会议,设置提醒 添加数据记录(…...
网页制作技术:概念、现状与展望?
网页制作技术:概念、现状与展望? 李升伟 网页制作技术是指用于创建和维护网站的一系列技术和方法。 概念: 它涉及多个方面,包括使用 HTML(超文本标记语言)来构建网页的结构和内容,使用 CSS&…...
Kafka Producer之数据重复和乱序问题
文章目录 1. 数据重复2. 数据乱序 为了可靠性,Kafka有消息重试机制,但是同时也带来了2大问题 1. 数据重复 消息发送到broker后,broker记录消息数据到log中,但是由于网络问题,producer没有收到acks,于是再次…...
Java前后端分离开发的步骤以及注意事项
在现代Web应用程序开发中,前后端分离是一种常见的架构模式。这种模式将前端(用户界面)和后端(业务逻辑和数据处理)分开独立开发和部署,从而提高开发效率、代码的可维护性和团队协作能力。本文将介绍Java前后…...
C#绘制阻抗圆图初步
阻抗圆图,或者叫史密斯图,是无线电设计方面用的; 基本的阻抗圆图如下, 下面尝试用C#能不能画一下; 先在网上找一个画坐标的C#类,它的效果如下; 自己再增加一个函数,可以绘制中心在…...
【STC89C51单片机】定时器/计数器的理解
目录 定时器/计数器1. 定时器怎么定时简单理解(加1经过了多少时间)什么是时钟周期什么是机器周期 2.如何设置定时基本结构相关寄存器1. TMOD寄存器2. TCON寄存器 代码示例 定时器/计数器 STC89C51单片机的定时器和计数器(Timers and Counter…...
数据建模标准-关系建模
数据模型定义:DAMA数据治理体系中将数据模型定义为一种文档形式,数据模型是用来将数据需求从业务传递到IT,以及在IT内部从分析师、建模师和架构师到数据库设计人员和开发人员的主要媒介; 作用:记录数据需求和建模过程中产生的数据…...
Qt日志库QsLog使用教程
前言 最近项目中需要用到日志库。上一次项目中用到了log4qt库,这个库有个麻烦的点是要配置config文件,所以这次切换到了QsLog。用了后这个库的感受是,比较轻量级,嘎嘎好用,推荐一波。 下载QsLog库 https://github.c…...
07. Hibernate 会话工厂(SessionFactory)
1. 前言 Hibernate 的核心价值观是:开发者们!做你们应该做的。脏的、累的、没技术含义的由本尊来做。 本节课和大家一起好好的聊聊 Hibernate 的核心组件之一:会话工厂(SessionFactory)。 通过本节课,你…...
使用Nginx实现高效负载均衡
概述 Nginx是一款高性能的HTTP和反向代理服务器,广泛用于Web服务的负载均衡。它能有效分发流量至多个后端服务器,提高网站的可用性和响应速度,同时增强系统的可扩展性和安全性。本文将介绍如何配置Nginx进行负载均衡,并提供具体的…...
华为OD机考题(基础API)
基础API 字典排序 List<String> listnew ArrayList(); //add list member Arrays.sort(list);List<Map<String,Integer>> listnew ArrayList(); //add list member Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {Over…...
<数据集>UA-DETRAC车辆识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:20500张 标注数量(xml文件个数):20500 标注数量(txt文件个数):20500 标注类别数:4 标注类别名称:[car, van, others, bus] 序号类别名称图片数框数1car201871259342…...
学生管理系统(C语言)(Easy-x)
课 程 报 告 课 程 名 称: 程序设计实践 专 业 班 级 : XXXXX XXXXX 学 生 姓 名 : XXX 学 号 : 231040700302 任 课 教 师 &a…...
C# 解析省份、城市、区域 json文件
一、json文件内容如下,(小程序里好像有用到...): 二、读取包含省份城市区域的json文件,并整理成想要的结果: string path Server.MapPath("/js"); string file System.IO.Path.Combine(path, "数据.…...
用C语言写的一个扫雷小游戏
头文件 调用头文件和声明函数 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <time.h> #include <stdlib.h>#define ROW 9 #define COL 9#define ROWS ROW2 #define COLS COL2#define EASY_CONT 10//声明函数 //初始化棋盘函数 void InitB…...
C++——类和对象(初始化列表和运算符重载与静态与友元)
文章目录 初始化列表语法结构定义和使用案例初始化列表初始化常量成员: 注意事项 运算符重载加法运算符重载语法结构示例注意事项 减法运算符重载语法结构示例注意事项 等于运算符重载等于运算符 的重载语法示例注意事项 大于运算符重载大于运算符 > 的重载语法…...
【WPF】图片剪裁-ImageCropping
【WPF】图片剪裁-ImageCropping 背景技术栈实现思路核心代码界面布局Style处理逻辑使用技巧预览下载背景 机缘巧合吧,当时在全网寻找图像剪裁工具,但大都不能满足需求,于是决定动手写。当然如果只是为了完成这么一个功能就没有必要记录了,主要是不依赖与第三方图像库,且实…...
C++的模板(十二):forward模板
标准库的std::forward模板有一个类型T参数。在实际使用时,T取什么值应该不存在疑惑: class A { public:A() {}A(int n):n(n) {}template <class T> A(T &&a);void print(A &&a) { printf("A&&\n"); }void pri…...
docker desktop历史版本安装
1.安装choco Windows安装 choco包管理工具-CSDN博客 2.通过choco安装 下面例子为安装旧版2.3.0.2,其它版本类似 Chocolatey Software | Docker Desktop 2.3.0.2 https://download.docker.com/win/stable/45183/Docker%20Desktop%20Installer.exe choco install docker-des…...
Ubuntu系统成功安装Docker教程
服务器版本: Ubuntu 22.04.3 LTS 1. 卸载旧版本 Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,需要卸载: sudo apt-get remove docker docker-engine docker.io containerd runc2. 更新 apt 软件包 …...
网页开发设计公司/广州seo营销培训
1114. Family Property 题目大意 给定每个人的家庭成员和其名下的房产,请你统计出每个家庭的人口数、人均房产套数和面积。首先在第一行输出一个家庭个数。随后按照下列格式输出每个家庭的信息:家庭成员的最小编号、家庭人口数、人均房产套数、人均房产…...
注册网站帐号注销/淘宝推广怎么做
我的简单jQuery的加载语句需要花费太多时间(50秒).没有服务器端问题,服务器的页面逻辑很简单.我也试过$.ajax,$.get甚至尝试使用ManualAJAX调用(XMLHttpRequest).以下是jQuery加载的示例.$(function() {$(#frmPrd).live(submit, function(event) {event.preventDefault();mUrl …...
专门做娱乐场所的设计网站/网络推广赚钱平台有哪些
Bash中管道会导致数据库连接信息丢失简化问题说明该问题前,我们先把它简单化。有一个sample data,tab.lst:tab1,col1tab2,col2...以下两段代码的输出是一致的。while IFS, read -r tab coldoecho "$tab $col"done < tab.lstcat tab.lst | w…...
网站普查建设背景/网站建设企业建站
文章目录系统配置PDF 转 HTMLpdf2htmlEXpdf2htmlPDFBoxaspose-wordsPDF 转 TXTaspose-wordspypdf2PDF 转 docxpdf2docx其他系统配置 Macos M1 pro PDF 转 HTML 首先给出的是不需要写任何代码就能成的 pdf2htmlEX 要将 PDF 文件转换为 HTML 文件,可以使用 pdf2h…...
当当网站建设目标/网络营销和电子商务的区别
🍅 Java学习路线:搬砖工逆袭Java架构师 🍅 简介:Java领域优质创作者🏆、CSDN哪吒公众号作者✌ 、Java架构师奋斗者💪 🍅 扫描主页左侧二维码,加入群聊,一起学习、一起进步 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 一、什么是装箱?什么是拆箱? 在Java SE5之前,…...
用什么自己做网站/专业网站建设公司
操作方法: 1、按住 SHIFT键 然后对文件或文件夹点击右键,我们就可以看到多了一项 “复制到路径” 选项。 2、只要点击 “复制到路径”,路径就复制到剪贴板中了, 然后就可以粘贴了。...