82.android 簡單的當前執行記憶體清理
阿新 • • 發佈:2018-12-15
//在Activity裡使用:
//我的這個是指定了一個包名,除了這個包名的應用,其他全部清理
private void CleaningOperation() { ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> infoList = am.getRunningAppProcesses(); List<ActivityManager.RunningServiceInfo> serviceInfos = am.getRunningServices(100); // Log.d("TAGDD1", "-----------before memory info : " +this.getAvailMemory(getApplicationContext())); int count = 0; if (infoList != null) { for (int i = 0; i < infoList.size(); ++i) { ActivityManager.RunningAppProcessInfo appProcessInfo = infoList.get(i); Log.e("TAGDD1", "process name : ----------" + appProcessInfo.processName); //importance 該程序的重要程度 分為幾個級別,數值越低就越重要。 Log.e("TAGDD2", "importance : -----------" + appProcessInfo.importance); // 一般數值大於RunningAppProcessInfo.IMPORTANCE_SERVICE的程序都長時間沒用或者空程序了 // 一般數值大於RunningAppProcessInfo.IMPORTANCE_VISIBLE的程序都是非可見程序,也就是在後臺執行著 // if (appProcessInfo.importance > 100) { // String[] pkgList = appProcessInfo.pkgList; // for (int j = 0; j < pkgList.length; ++j) {//pkgList 得到該程序下執行的包名 // Log.e("TAGDD4", "It will be killed, package name : " + pkgList[j]); // am.killBackgroundProcesses(pkgList[j]); // count++; // } // } //只要不是com.example.hasee.a1011ceshi這個包名的程序,其餘程序全部禁止 if (appProcessInfo.processName!="com.example.hasee.a1011ceshi") { String[] pkgList = appProcessInfo.pkgList; for (int j = 0; j < pkgList.length; ++j) {//pkgList 得到該程序下執行的包名 Log.e("TAGDD3", "It will be killed, package name : ----------" + pkgList[j]); am.killBackgroundProcesses(pkgList[j]); count++; Log.e("TAGDD4", "count : ----------" + count+""); } } } } }
//------------------------------------------------------------------完------------------------------------------------------------------------------