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进行负载均衡,并提供具体的…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
