excessive cpu 优化杀进程解决方案 android P
背景:
android系统优化电池使用,在应用退到后台后会判断应用是否还在使用cpu,如果在指定时间内使用cpu到一定程度就会杀进程,报ActivityManager: Killing 9553:com.oushang.screen/1000 (adj 700): excessive cpu 56840 during 300080 dur=623325 limit=10这个错。车机需要排除排除这种情况下杀carlink进程,在checkExcessivePowerUsageLocked种修改如下:
第一次修改:
diff --git a/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java b/frameworks/base/services/core/jav
index f3531c4..b7a7927 100755
--- a/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -24657,7 +24657,11 @@ public class ActivityManagerService extends IActivityManager.StubcpuLimit = mConstants.POWER_CHECK_MAX_CPU_2;} else if (checkDur <= (mConstants.POWER_CHECK_INTERVAL*3)) {cpuLimit = mConstants.POWER_CHECK_MAX_CPU_3;
- } else {
+ } else if ((app.info.packageName.equals("com.oushang.screen"))
+ && (checkDur <= (mConstants.POWER_CHECK_INTERVAL*12))) {
+ Slog.d(TAG,"~~~zjy screen delay 1 hour");
+ cpuLimit = mConstants.POWER_CHECK_MAX_CPU_3;
+ } else {cpuLimit = mConstants.POWER_CHECK_MAX_CPU_4;}if (((cputimeUsed*100)/uptimeSince) >= cpuLimit) {
后面发现不行,主要是进入这个条件 checkDur <= (mConstants.POWER_CHECK_INTERVAL*3)之后,直接就开始杀进程,后面优化内容如下:
--- a/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -24656,14 +24656,22 @@ public class ActivityManagerService extends IActivityManager.Stub|| app.setProcState <= ActivityManager.PROCESS_STATE_HOME) {cpuLimit = mConstants.POWER_CHECK_MAX_CPU_2;} else if (checkDur <= (mConstants.POWER_CHECK_INTERVAL*3)) {
- cpuLimit = mConstants.POWER_CHECK_MAX_CPU_3;
- } else if ((app.info.packageName.equals("com.oushang.screen"))
- && (checkDur <= (mConstants.POWER_CHECK_INTERVAL*12))) {
+ Slog.d(TAG,"~~~zjy screen delay POWER_CHECK_INTERVAL*3"+",packageName:"+app.info.packageName);
+ if (app.info.packageName.equals("com.oushang.screen")) {
+ Slog.d(TAG,"~~~zjy screen delay 1 hour");
+ cpuLimit = mConstants.POWER_CHECK_MAX_CPU_2;
+ } else {
+ cpuLimit = mConstants.POWER_CHECK_MAX_CPU_3;
+ }
+ } else if ((app.info.packageName.equals("com.oushang.screen"))
+ && (checkDur < (mConstants.POWER_CHECK_INTERVAL*12))) {Slog.d(TAG,"~~~zjy screen delay 1 hour");cpuLimit = mConstants.POWER_CHECK_MAX_CPU_3;} else {
+ Slog.d(TAG,"~~~zjy screen delay POWER_CHECK_MAX_CPU_4"+",packageName:"+app.info.packageName);cpuLimit = mConstants.POWER_CHECK_MAX_CPU_4;}
+ Slog.d(TAG, "~~~zjy screen delay cputimeUsed:"+cputimeUsed*100+",uptimeSince:"+uptimeSince+",cpuLimit:"+cpuLimit+if (((cputimeUsed*100)/uptimeSince) >= cpuLimit) {synchronized (stats) {stats.reportExcessiveCpuLocked(app.info.uid, app.processName,
修改后的内容如下:
// What is the limit for this process?int cpuLimit;long checkDur = curUptime - app.whenUnimportant;if (checkDur <= mConstants.POWER_CHECK_INTERVAL) {cpuLimit = mConstants.POWER_CHECK_MAX_CPU_1;} else if (checkDur <= (mConstants.POWER_CHECK_INTERVAL*2)|| app.setProcState <= ActivityManager.PROCESS_STATE_HOME) {cpuLimit = mConstants.POWER_CHECK_MAX_CPU_2;} else if (checkDur <= (mConstants.POWER_CHECK_INTERVAL*3)) {Slog.d(TAG,"~~~zjy screen delay POWER_CHECK_INTERVAL*3"+",packageName:"+app.info.packageName);if (app.info.packageName.equals("com.oushang.screen")) {Slog.d(TAG,"~~~zjy screen delay 1 hour");cpuLimit = mConstants.POWER_CHECK_MAX_CPU_2;} else {cpuLimit = mConstants.POWER_CHECK_MAX_CPU_3;}} else if ((app.info.packageName.equals("com.oushang.screen"))&& (checkDur < (mConstants.POWER_CHECK_INTERVAL*12))) {Slog.d(TAG,"~~~zjy screen delay 1 hour");cpuLimit = mConstants.POWER_CHECK_MAX_CPU_2;} else {Slog.d(TAG,"~~~zjy screen delay POWER_CHECK_MAX_CPU_4"+",packageName:"+app.info.packageName);cpuLimit = mConstants.POWER_CHECK_MAX_CPU_4;}Slog.d(TAG, "~~~zjy screen delay cputimeUsed:"+cputimeUsed*100+",uptimeSince:"+uptimeSince+",cpuLimit:"+cpuLimit+",checkDur:"+checkDur);if (((cputimeUsed*100)/uptimeSince) >= cpuLimit) {synchronized (stats) {stats.reportExcessiveCpuLocked(app.info.uid, app.processName,uptimeSince, cputimeUsed);}
excessive cpu 优化杀进程解决方案 android P相关推荐
- android 杀进程 方法,android中杀死进程的方法
第一种方法:这个方法只能自杀,不能杀死其他进程~ /**************************************************** * 杀死进程的第一种 ...
- android杀进程管理,还在杀进程?Android你不知道的那些事儿
你真的了解Android吗? 谷歌为我们带来了一个不同于iOS的Android新系统,如今,昔日的菜鸟已成一方霸主,使用Android手机的人也越来越多,但是,你真的了解Android吗? Andro ...
- Android WebView开发(四):WebView独立进程解决方案
一.Android WebView开发(一):基础应用 二.Android WebView开发(二):WebView与Native交互 三.Android WebView开发(三):WebView性能 ...
- Android应用开发之CPU优化
最近开发一个APK的时候遇到了一个问题,CPU动不动就占用到40%以上,而且是一个服务型的常驻内存APK,这样子肯定不行的,CPU发热可能会过高.这个APK需要优化,包括内存优化,结构优化,CPU优化 ...
- 【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )
文章目录 一.Android CPU 优化 二.CPU Profiler 工具 三.相关资源 一.Android CPU 优化 在 Android 中 , 出现 动画掉帧 , 页面切换白屏 , 卡顿 ...
- 【Android 应用开发】Android 杀进程总结 ( 杀后台进程 | 杀前台进程 | 杀其它进程 )
文章目录 一.Android 杀后台进程 二.Android 杀前台进程 三.Android 杀其它进程 一.Android 杀后台进程 使用 Android 的进程 api 类 android.os ...
- android 杀死后台进程,android 几种杀进程的方式
今天在编写 application 通用组件时,需要在低内存的回调中杀死进程,所以找了下 androd 傻进程的方法,总结下来有下面几种: 根据进程名称杀进程 android.os.Process.k ...
- android kill 命令杀死进程,【Android 应用开发】Android 杀进程总结 ( 杀后台进程 | 杀前台进程 | 杀其它进程 )...
一.Android 杀后台进程 使用 Android 的进程 api 类 android.os.Process 杀死进程 : android.os.Process.killProcess(androi ...
- ActivityManager: Killing *pid + 包名*: excessive cpu 21890 during 300019 dur=45344791 limit=2
文章目录 1.简介 2.具体分析 1.简介 我们在运行apk 的时候有时进程会被杀死掉,看log 一般出现如此: ActivityManager: Killing 19893:com.xxx.xxx/ ...
- SQL优化笔记(二)—CPU优化
概览: 数据库性能问题故障排除 检查硬件原因 使用 PerfMon 跟踪数据库瓶颈 评估查询性能 解决数据库系统的性能问题可能是一项艰巨的任务.了解如何找到问题很重要,但是了解系统对特定请求作出特定反 ...
最新文章
- Docker核心技术之网络管理
- 网站排名和权重骤降的原因是什么?又该如何处理?
- boost::core模块cmath相关测试程序
- 中小企业大数据应用之道:思维在于借力
- PMP读书笔记(第11章)
- markdown与word相互转换的快捷方法
- VB讲课笔记01:VB6.0安装与启动
- Mac高效笔记软件GoodNotes 5
- HTML5前端开发实战03-网上花店网页制作
- isis协议配置和详解
- 局域网内两台电脑ping不通
- 「转」新手淘宝天猫小卖家开店,如何做好全盘运营?
- 计算机一级演示文稿知识点,计算机一级考试ppt演示文稿及上网题考点
- 用户下单时商品库存变化
- uva 10128 队伍
- 基于FFMPEG水印添加---avfilter库
- 仙人掌之歌——大规模高速扩张(3)
- T-LESS: An RGB-D Dataset for 6D Pose Estimation of Texture-less Objects
- html基础笔记与html5代码展示
- 实现扫描图片出现3d模型的虚拟仿真技术