保活测试之获取系统应用进程

保活测试步骤概述

1.结束指定应用进程

2.获取系统进程列表,找出pid在进程结束执行前后是否一致

代码概要

结束进程代码

shellExec("am force-stop " + package); public static StringBuffer shellExec(String cmd) { Runtime runtime = Runtime.getRuntime(); StringBuffer mRespBuff = new StringBuffer(); try { Process process = runtime.exec(cmd); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); char[] buff = new char[1024]; int ch = 0; while ((ch = reader.read(buff)) != -1) { mRespBuff.append(buff, 0, ch); } reader.close(); return mRespBuff; } catch (IOException e) { e.printStackTrace(); } return null; } ========或========== private void killProcess(int pid) { android.os.Process.killProcess(pid); //android.os.Process.killProcess(android.os.Process.myPid() ); //杀死进程 }

获取系统进程列表

shellExec(ps); public static StringBuffer shellExec(String cmd) { Runtime runtime = Runtime.getRuntime(); StringBuffer mRespBuff = new StringBuffer(); try { Process process = runtime.exec(cmd); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); char[] buff = new char[1024]; int ch = 0; while ((ch = reader.read(buff)) != -1) { mRespBuff.append(buff, 0, ch); } reader.close(); return mRespBuff; } catch (IOException e) { e.printStackTrace(); } return null; } ========或========== /** * 获取进程集合 */ private List<String> getProcessList(Context context) { List<String> resultList = new ArrayList<>(); if (context == null) { return resultList; } List<AndroidAppProcess> mProcessList = AndroidProcesses.getRunningAppProcesses(); for (AndroidAppProcess appProcess : mProcessList) { resultList.add(appProcess.name); Log.e("MainActivity", "getProcessList : " + appProcess.name + " :" + appProcess.pid); if (appProcess.name.equals(packageMaster) || appProcess.name.equals(packageIc) || appProcess.name.equals(packageService) || appProcess.name.equals(packageOsupdate) || appProcess.name.equals(packageSystemcommand) || appProcess.name.equals(packageXpaas)) { killProcess(appProcess.pid); } } return resultList; }

注意:

1.以上需要先获取系统权限。

2.Runtime.exec();大部分设备获取不到系统进程,可尝试uid和系统进程uid一样。

3.getRunningAppProcesses()在5.1+后获取不到系统进程的,只能获取自己的进程。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0.Android手机操作系统的四层架构? Applications , Application Framewor...
    lucas777阅读 12,398评论 0 16
  • (一)Java 5 相关知识点 1)增强型 for 循环: 答:增强 for 循环:foreach 语句,fore...
    tjqbtp阅读 3,576评论 0 1
  • Java 语言支持的类型分为两类:基本类型和引用类型。整型(byte 1, short 2, int 4, lon...
    xiaogmail阅读 5,176评论 0 10
  • 1、java中==和equals和hashCode的区别 基本数据类型的==比较的值相等.类的==比较的内存的地址...
    快感的感知阅读 4,818评论 0 4
  • 1、java中==和equals和hashCode的区别 基本数据类型的==比较的值相等.类的==比较的内存的地址...
    Mr_Fly阅读 4,432评论 0 0