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进行负载均衡,并提供具体的…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
前端开发者常用网站
Can I use网站:一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use:Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站:MDN JavaScript权威网站:JavaScript | MDN...
如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
