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进行负载均衡,并提供具体的…...
Windows NFSv4.1客户端终极指南:让Windows系统无缝访问NFS服务器
Windows NFSv4.1客户端终极指南:让Windows系统无缝访问NFS服务器 【免费下载链接】ms-nfs41-client NFSv4.1 Client for Windows 项目地址: https://gitcode.com/gh_mirrors/ms/ms-nfs41-client 想要在Windows系统中像操作本地文件一样访问远程NFS服务器吗&a…...
从V100到A100:手把手教你理解Ampere架构的7个关键性能优化点
从V100到A100:手把手教你理解Ampere架构的7个关键性能优化点 如果你正在使用NVIDIA V100进行深度学习训练或高性能计算,那么升级到A100可能已经在你的考虑范围内。但这次升级究竟能带来多少实际性能提升?本文将带你深入Ampere架构的7个核心优…...
基于Next.js与Prisma构建宠物社区应用:全栈开发实战解析
1. 项目概述:一个为宠物爱好者打造的社区应用最近在GitHub上闲逛,发现了一个挺有意思的开源项目,叫jtsang4/happypaw。光看名字,“Happy Paw”(快乐的爪子),就能猜到这八成是和宠物相关的。点进…...
本地AI网关实战:统一管理多模型服务,实现智能路由与成本控制
1. 项目概述:一个本地化的AI网关如果你正在同时使用多个AI模型服务商,比如OpenAI、Anthropic、Google Gemini,或者还在本地运行着Ollama、vLLM这样的模型,那你一定体会过那种切换的繁琐。每个客户端、每个脚本都要配置不同的API密…...
基于Intelli框架构建智能体应用:从核心原理到电商客服实战
1. 项目概述:从“智能节点”到“智能体”的进化 最近在开源社区里,一个名为 intelligentnode/Intelli 的项目引起了我的注意。乍一看这个名字,你可能会和我最初一样,把它理解为一个“智能节点”框架。但深入探究其代码仓库和设计…...
基于Ollama构建本地大模型智能体:从原理到工程实践
1. 项目概述:当本地大模型遇上智能体框架最近在折腾本地大模型应用开发的朋友,估计都绕不开一个核心问题:如何让一个“聪明”的模型,不仅能回答问题,还能像真正的助手一样,自主调用工具、处理复杂任务&…...
基于区块链与IPFS的视频版权存证系统之区块链部分设计
本节对视频版权存证系统的区块链部分做一个简单的介绍,包括目录结构、文件作用、设计思路。 购买专栏前请认真阅读:《基于区块链与IPFS的视频版权存证系统》专栏简介 一、区块链部分文件目录简介 ├── bin //保存了二进制文件方便启动网络 │ ├── configtxgen //生成…...
Slurm集群GPU资源管理实战:如何用`--gres=gpu`参数正确调度你的GTX1080Ti?
Slurm集群GPU资源管理实战:如何用--gresgpu参数正确调度你的GTX1080Ti? 在AI研究与数据科学领域,GPU资源的高效利用直接关系到模型训练与实验的成败。许多团队虽然配备了GTX1080Ti等高性能显卡,却常因Slurm集群调度不当导致资源闲…...
凌晨还在改论文?这些降重黑科技帮你一键通关
凌晨对着电脑屏幕改论文,那种既疲惫又焦虑的感觉,经历过的人都懂。好在现在的降重工具已经不只是“替换同义词”那么简单了,像 毕业之家 和 PaperRed 这两款主流工具,各自走了完全不同的技术路线,可以根据你的痛点来选…...
AI设计风格Prompt实战指南:从32种风格词典到精准生成
1. 项目概述:一份给AI设计师的“风格词典”如果你和我一样,经常用 Claude、Cursor 或者 v0 这类 AI 工具来生成网页界面,那你肯定遇到过这个头疼的问题:脑子里想的是“赛博朋克”或者“瑞士风格”,但打出来的 prompt 却…...
