背景:

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相关推荐

  1. android 杀进程 方法,android中杀死进程的方法

    第一种方法:这个方法只能自杀,不能杀死其他进程~ /**************************************************** *            杀死进程的第一种 ...

  2. android杀进程管理,还在杀进程?Android你不知道的那些事儿

    你真的了解Android吗? 谷歌为我们带来了一个不同于iOS的Android新系统,如今,昔日的菜鸟已成一方霸主,使用Android手机的人也越来越多,但是,你真的了解Android吗? Andro ...

  3. Android WebView开发(四):WebView独立进程解决方案

    一.Android WebView开发(一):基础应用 二.Android WebView开发(二):WebView与Native交互 三.Android WebView开发(三):WebView性能 ...

  4. Android应用开发之CPU优化

    最近开发一个APK的时候遇到了一个问题,CPU动不动就占用到40%以上,而且是一个服务型的常驻内存APK,这样子肯定不行的,CPU发热可能会过高.这个APK需要优化,包括内存优化,结构优化,CPU优化 ...

  5. 【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )

    文章目录 一.Android CPU 优化 二.CPU Profiler 工具 三.相关资源 一.Android CPU 优化 在 Android 中 , 出现 动画掉帧 , 页面切换白屏 , 卡顿 ...

  6. 【Android 应用开发】Android 杀进程总结 ( 杀后台进程 | 杀前台进程 | 杀其它进程 )

    文章目录 一.Android 杀后台进程 二.Android 杀前台进程 三.Android 杀其它进程 一.Android 杀后台进程 使用 Android 的进程 api 类 android.os ...

  7. android 杀死后台进程,android 几种杀进程的方式

    今天在编写 application 通用组件时,需要在低内存的回调中杀死进程,所以找了下 androd 傻进程的方法,总结下来有下面几种: 根据进程名称杀进程 android.os.Process.k ...

  8. android kill 命令杀死进程,【Android 应用开发】Android 杀进程总结 ( 杀后台进程 | 杀前台进程 | 杀其它进程 )...

    一.Android 杀后台进程 使用 Android 的进程 api 类 android.os.Process 杀死进程 : android.os.Process.killProcess(androi ...

  9. ActivityManager: Killing *pid + 包名*: excessive cpu 21890 during 300019 dur=45344791 limit=2

    文章目录 1.简介 2.具体分析 1.简介 我们在运行apk 的时候有时进程会被杀死掉,看log 一般出现如此: ActivityManager: Killing 19893:com.xxx.xxx/ ...

  10. SQL优化笔记(二)—CPU优化

    概览: 数据库性能问题故障排除 检查硬件原因 使用 PerfMon 跟踪数据库瓶颈 评估查询性能 解决数据库系统的性能问题可能是一项艰巨的任务.了解如何找到问题很重要,但是了解系统对特定请求作出特定反 ...

最新文章

  1. Docker核心技术之网络管理
  2. 网站排名和权重骤降的原因是什么?又该如何处理?
  3. boost::core模块cmath相关测试程序
  4. 中小企业大数据应用之道:思维在于借力
  5. PMP读书笔记(第11章)
  6. markdown与word相互转换的快捷方法
  7. VB讲课笔记01:VB6.0安装与启动
  8. Mac高效笔记软件GoodNotes 5
  9. HTML5前端开发实战03-网上花店网页制作
  10. isis协议配置和详解
  11. 局域网内两台电脑ping不通
  12. 「转」新手淘宝天猫小卖家开店,如何做好全盘运营?
  13. 计算机一级演示文稿知识点,计算机一级考试ppt演示文稿及上网题考点
  14. 用户下单时商品库存变化
  15. uva 10128 队伍
  16. 基于FFMPEG水印添加---avfilter库
  17. 仙人掌之歌——大规模高速扩张(3)
  18. T-LESS: An RGB-D Dataset for 6D Pose Estimation of Texture-less Objects
  19. html基础笔记与html5代码展示
  20. 实现扫描图片出现3d模型的虚拟仿真技术

热门文章

  1. 重要的GMaps对象与接口
  2. php 抓取百度快照时间,php获取网站百度快照日期的方法
  3. python导入excel加入折线图_Python openpyxl 插入折线图实例
  4. 钕铁硼表面处理之—钝化
  5. vite 预编译实现
  6. 洛谷P4158 [SCOI2009]粉刷匠 题解
  7. 系统提示 api-ms-win-crt-runtime-l1-1-0.dll文件丢失,解决方法。。。
  8. 你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。 解决方案
  9. npm publish 报错 403
  10. Jenkins - Publish Over SSH