Android P 性能优化:创建APP进程白名单,杀死白名单之外的进程
一、前言
最近开发过程中,因系统内存相对比较紧张,在启动某些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进程白名单,杀死白名单之外的进程相关推荐
- Android进阶——性能优化之内存管理机制和垃圾采集回收机制(六)
文章大纲 引言 一.内存泄漏和内存溢出概述 二.Java运行时内存模型 1.线程私有数据区 1.1.程序计数器PC 1.2.虚拟机栈 1.3 本地方法栈 2.所有线程共享数据区 2.1.Java堆 2 ...
- Android 进阶——性能优化之电量优化全攻略及实战小结(二)
文章大纲 引言 一.在低电耗模式和应用待机模式下进行测试 1.在低电耗模式下测试您的应用 2.在应用待机模式下测试您的应用 3.列入白名单的可接受用例 4.确定当前充电状态 5.监控充电状态变化 6. ...
- Android应用性能优化最佳实践.
移动开发 Android应用性能优化最佳实践 罗彧成 著 图书在版编目(CIP)数据 Android应用性能优化最佳实践 / 罗彧成著. -北京:机械工业出版社,2017.1 (移动开发) ISBN ...
- Android应用性能优化 - 开篇
Android技术优化日异月新,谷歌在GoogleI / O 2018 上终于发布了Android 9.0,系统性能也已经非常流畅,在我看来已远超某果(哈哈其实是因为我是穷逼用不起某果),但是由于国内 ...
- Android WebView 性能优化
原文出处:http://motalks.cn/2016/09/11/Android-WebView-JavaScript-3/ WebView相关阅读 Android WebView 和 javaSc ...
- android 应用性能优化1
1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...
- Android客户端性能优化(魅族资深工程师毫无保留奉献)
Android客户端性能优化(魅族资深工程师毫无保留奉献) 转载学习:http://blog.tingyun.com/web/article/detail/155?from=groupmessage& ...
- Android应用性能优化——学习心得
Android应用性能优化--学习心得 Android应用性能优化这门课分为内存优化.视图优化.电量优化.Bitmap优化.其他优化等五大部分,下面这对这五大部分的学习能容做一下总结: 一. 内存优化 ...
- Android应用性能优化之优化列表头像过度绘制[一]
为什么80%的码农都做不了架构师?>>> 操作的是否顺畅.卡顿,决定着整体的流畅程度. 事实上android跟iphone的差别,个人觉得很大程度上决定于流畅程度,无论是动画, ...
最新文章
- python【蓝桥杯vip练习题库】BASIC-22(字符串 递归)
- Hadoop2配置详解
- 传统方法怎么玩计算机审美
- CI持续集成系统环境---部署Gitlab环境完整记录
- mysql数据库突然连不上了_mysql数据库突然连接不上去
- 测试面试题,自动化测试与性能测试篇(附答案)
- Java基础如何运用FileOutputStream
- cmk聪明客机器人餐厅_住了10年的老房大改造,45客餐厅全开放,更有整面大衣柜,高级又实用!...
- 基于连接跟踪机制的状态防火墙的设计与实现
- XRD测试常见问题及解答(一)
- matlab 函数pdf怎么用_PDF文档怎么进行批量旋转?调整页面用迅捷PDF转换器
- 关于OSGI中的Felix热插拔技术
- 你可能不需要担心,AI对你的工作造成威胁:万字长文解读科技革命与人类发展
- 计算机二级access通过技巧,2017年计算机二级Access应试技巧
- dateframe取某列数据_DataFrame数据选取全攻略
- java上传图片怎么查看,Java上传图片并查看
- Java svg图片转png图片
- 百度api使用:文字识别(OCR)、长图文字识别、姓名识别
- Windows10下VirtualBox虚拟机的备份与迁移
- Mysql的MMM高可用群集
热门文章
- rk3568 Android 适配红外遥控器
- sizeof 虚函数
- 人脸检测实战:使用opencv加载深度学习模型实现人脸检测
- JPA利用@Modifying进行update和delete操作
- 打游戏服务器起什么作用,服务器为什么贵,打游戏会很快吗
- CocoaPods安装以及一些问题处理-2022.6.21
- 百度云服务器:远程访问不了特定端口解决(如 80,8080)
- 2021年9月_IEEE Transactions on Image Processing_科技前言热点调查表
- 银行风险预警系统建设中对Java规则引擎选型推荐
- 3n+1问题(C++)