一、前言

最近开发过程中,因系统内存相对比较紧张,在启动某些CPU、内存占用比较大的APP的时候,就需要清理一下,把能杀的都杀掉,给前台进程腾出系统资源。

  • 缺陷:对于persist进程,以及一些流氓APP(杀死后还自己起来的),还得想别的办法处理

二、代码实现

2.1 权限部分

  • 要杀死其他APP进程,需要拥有下面权限,请添加到 AndroidManifest.xml 的权限声明列表中
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>

2.2 获取正在运行的APP列表

  • 在Andorid P的版本里,下面的API接口,只有拥有"android.uid.system"、系统签名的APP上才能正常使用
  • 如果不具备"android.uid.system",则只能获取到自己当前进程的名称字符串

2.2.1 设置 android:sharedUserId

  • 修改AndroidManifest.xml的开头部分,添加 android:sharedUserId=“android.uid.system”
<manifest xmlns:android="http://schemas.android.com/apk/res/android"android:sharedUserId="android.uid.system"package="com.future.xyz.multimediacenter">

2.2.2 获取进程列表

  • 如下,使用activityManager .getRunningAppProcesses()接口获取
 ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);List<ActivityManager.RunningAppProcessInfo> list = activityManager .getRunningAppProcesses();int i = list.size();Log.i(TAG, String.valueOf(i));for (int j = 0; j < list.size(); j++) {Log.i(TAG,"zs, processName: "+ list.get(j).processName);}

2.3 设置白名单

  • 将不需要杀死的APP的包名添加进去
  private String mProcWhiteList[] = {         ,"com.android.providers.tv","com.mediatek.tvinput","com.dangbei.lerad.vesuvius.sample"
//            ,"com.ktcp.tvvideo","com.android.browser","com.hisense.client","com.android.soundrecorder"
//            ,"com.zk.tvwizard","com.android.inputmethod.pinyin","com.android.defcontainer","system","com.ms.weshare"// …… 省略……};

2.4 杀死白名单外的进程

  • 如下在当前APP启动的onCreate阶段,先杀一遍
 Log.d(TAG, "zs,  onCreate ");ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);List<ActivityManager.RunningAppProcessInfo> list = activityManager .getRunningAppProcesses();int i = list.size();Log.i(TAG, String.valueOf(i));for (int j = 0; j < list.size(); j++) {Log.i(TAG,"zs, processName: "+ list.get(j).processName);Boolean killProc = true;for(int k=0; k<mProcWhiteList.length; k++){if(mProcWhiteList[k].equals(list.get(j).processName)){killProc = false;}}if(killProc){activityManager.killBackgroundProcesses(list.get(j).processName);Log.d(TAG, "zs,  killed  "+list.get(j).processName);}}

2.5 打印

2022-10-19 16:46:38.859 6390-6390/com.future.xyz.multimediacenter D/DeviceListActivity: zs,  onCreate
2022-10-19 16:46:38.860 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.dangbei.mimir.lightos.home
2022-10-19 16:46:38.860 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.future.xyz.multimediacenter
2022-10-19 16:46:38.861 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.mediatek.wwtv.tvcenter
2022-10-19 16:46:38.861 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.android.keychain
2022-10-19 16:46:38.861 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.android.defcontainer
2022-10-19 16:46:38.861 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.utv.android
2022-10-19 16:46:38.872 6390-6390/com.future.xyz.multimediacenter D/DeviceListActivity: zs,  killed  com.utv.android
2022-10-19 16:46:38.872 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.mediatek.network
2022-10-19 16:46:38.872 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.kingboard.settings
2022-10-19 16:46:38.877 6390-6390/com.future.xyz.multimediacenter D/DeviceListActivity: zs,  killed  com.zk.settings
2022-10-19 16:46:38.877 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.android.inputmethod.latin
2022-10-19 16:46:38.877 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.fanzc
2022-10-19 16:46:38.877 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.zk.tvass
2022-10-19 16:46:38.877 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.android.tv.settings
2022-10-19 16:46:38.878 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.dangbei.lerad.vesuvius.sample
2022-10-19 16:46:38.878 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.talkingdata.sdk.TDAntiCheatingService
2022-10-19 16:46:38.878 6390-6390/com.future.xyz.multimediacenter D/DeviceListActivity: zs,  killed  com.talkingdata.sdk.TDAntiCheatingService
2022-10-19 16:46:38.878 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.android.bluetooth
2022-10-19 16:46:38.878 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.mediatek.tvinput
2022-10-19 16:46:38.878 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.ms.weshare
2022-10-19 16:46:38.879 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.mediatek.tvinputservice.arbitratorservice
2022-10-19 16:46:38.881 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.mediatek.TimeMeasurementAgent
2022-10-19 16:46:38.881 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.mediatek.hotkey.dispatcher
2022-10-19 16:46:38.881 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.android.se
2022-10-19 16:46:38.881 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.zk.extracontrol
2022-10-19 16:46:38.882 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.dangbei.speech
2022-10-19 16:46:38.882 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.aispeech.tvui
2022-10-19 16:46:38.882 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: com.android.systemui
2022-10-19 16:46:38.883 6390-6390/com.future.xyz.multimediacenter I/DeviceListActivity: zs, processName: system

三、结尾

对于persist进程(自启动),以及一些流氓APP(杀死后还自己起来的),还得想别的办法处理。

Android P 性能优化:创建APP进程白名单,杀死白名单之外的进程相关推荐

  1. Android进阶——性能优化之内存管理机制和垃圾采集回收机制(六)

    文章大纲 引言 一.内存泄漏和内存溢出概述 二.Java运行时内存模型 1.线程私有数据区 1.1.程序计数器PC 1.2.虚拟机栈 1.3 本地方法栈 2.所有线程共享数据区 2.1.Java堆 2 ...

  2. Android 进阶——性能优化之电量优化全攻略及实战小结(二)

    文章大纲 引言 一.在低电耗模式和应用待机模式下进行测试 1.在低电耗模式下测试您的应用 2.在应用待机模式下测试您的应用 3.列入白名单的可接受用例 4.确定当前充电状态 5.监控充电状态变化 6. ...

  3. Android应用性能优化最佳实践.

    移动开发 Android应用性能优化最佳实践 罗彧成 著 图书在版编目(CIP)数据 Android应用性能优化最佳实践 / 罗彧成著. -北京:机械工业出版社,2017.1 (移动开发) ISBN ...

  4. Android应用性能优化 - 开篇

    Android技术优化日异月新,谷歌在GoogleI / O 2018 上终于发布了Android 9.0,系统性能也已经非常流畅,在我看来已远超某果(哈哈其实是因为我是穷逼用不起某果),但是由于国内 ...

  5. Android WebView 性能优化

    原文出处:http://motalks.cn/2016/09/11/Android-WebView-JavaScript-3/ WebView相关阅读 Android WebView 和 javaSc ...

  6. android 应用性能优化1

    1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...

  7. Android客户端性能优化(魅族资深工程师毫无保留奉献)

    Android客户端性能优化(魅族资深工程师毫无保留奉献) 转载学习:http://blog.tingyun.com/web/article/detail/155?from=groupmessage& ...

  8. Android应用性能优化——学习心得

    Android应用性能优化--学习心得 Android应用性能优化这门课分为内存优化.视图优化.电量优化.Bitmap优化.其他优化等五大部分,下面这对这五大部分的学习能容做一下总结: 一. 内存优化 ...

  9. Android应用性能优化之优化列表头像过度绘制[一]

    为什么80%的码农都做不了架构师?>>>    操作的是否顺畅.卡顿,决定着整体的流畅程度. 事实上android跟iphone的差别,个人觉得很大程度上决定于流畅程度,无论是动画, ...

最新文章

  1. python【蓝桥杯vip练习题库】BASIC-22(字符串 递归)
  2. Hadoop2配置详解
  3. 传统方法怎么玩计算机审美
  4. CI持续集成系统环境---部署Gitlab环境完整记录
  5. mysql数据库突然连不上了_mysql数据库突然连接不上去
  6. 测试面试题,自动化测试与性能测试篇(附答案)
  7. Java基础如何运用FileOutputStream
  8. cmk聪明客机器人餐厅_住了10年的老房大改造,45客餐厅全开放,更有整面大衣柜,高级又实用!...
  9. 基于连接跟踪机制的状态防火墙的设计与实现
  10. XRD测试常见问题及解答(一)
  11. matlab 函数pdf怎么用_PDF文档怎么进行批量旋转?调整页面用迅捷PDF转换器
  12. 关于OSGI中的Felix热插拔技术
  13. 你可能不需要担心,AI对你的工作造成威胁:万字长文解读科技革命与人类发展
  14. 计算机二级access通过技巧,2017年计算机二级Access应试技巧
  15. dateframe取某列数据_DataFrame数据选取全攻略
  16. java上传图片怎么查看,Java上传图片并查看
  17. Java svg图片转png图片
  18. 百度api使用:文字识别(OCR)、长图文字识别、姓名识别
  19. Windows10下VirtualBox虚拟机的备份与迁移
  20. Mysql的MMM高可用群集

热门文章

  1. rk3568 Android 适配红外遥控器
  2. sizeof 虚函数
  3. 人脸检测实战:使用opencv加载深度学习模型实现人脸检测
  4. JPA利用@Modifying进行update和delete操作
  5. 打游戏服务器起什么作用,服务器为什么贵,打游戏会很快吗
  6. CocoaPods安装以及一些问题处理-2022.6.21
  7. 百度云服务器:远程访问不了特定端口解决(如 80,8080)
  8. 2021年9月_IEEE Transactions on Image Processing_科技前言热点调查表
  9. 银行风险预警系统建设中对Java规则引擎选型推荐
  10. 3n+1问题(C++)