清理内存clear

清理内存clear:

package com.android.cleanprocesstool;

import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.util.Log;
import android.os.UserHandle;
import android.os.UserManager;

import java.util.List;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.BatteryStats;
import android.os.Bundle;
import android.os.Handler;
import android.os.IPowerManager;
import android.os.Message;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.text.format.DateUtils;
import android.widget.TextView;
import android.os.Bundle;
import android.app.ActivityManager;
import android.text.format.Formatter;
import android.util.Log;
import android.widget.Toast;
import java.util.List;

public class ClearMemReceiver extends BroadcastReceiver {
    private static final String TAG = "Settings";
    private static final String PRIMARY_PROFILE_SETTING =
        "com.android.settings.PRIMARY_PROFILE_CONTROLLED";

    ActivityManager.MemoryInfo memoryInfo;
    private ActivityManager myActivityManager;
    private Context context;
    long mBeforeClearMem = 0;
    long mAfterClearMem = 0;

    private final long MIN_MEM_CLEAR = 10 * 1024 * 1024;
    @Override
    public void onReceive(Context context, Intent broadcast) {
        context = context;
        memoryInfo = new ActivityManager.MemoryInfo();
        myActivityManager =(ActivityManager)context.getSystemService(Activity.ACTIVITY_SERVICE);
        myActivityManager.getMemoryInfo(memoryInfo) ;

        mBeforeClearMem = memoryInfo.availMem;
        clearBackgroundProcesses(context);
    }

    private String[] mWhiteList = {
        "com.tencent.qqmusic",
        "com.tencent.mobileqq"
    };

    private void clearBackgroundProcesses(Context context) {

        ActivityManager activityManger = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> list = activityManger.getRunningAppProcesses();

        int importance = ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE;
        if (list != null) {
            for(int i = 0; i < list.size(); i++) {
                ActivityManager.RunningAppProcessInfo apinfo = list.get(i);
                String[] pkgList = apinfo.pkgList;
                for (int j = 0; j < pkgList.length; j++) {
                    boolean inWhiteList = false;
                    for  (String whitelist : mWhiteList) {
                        if (whitelist.equals(pkgList[j])) {
                            inWhiteList = true;
                            break;
                        }
                    }
                    if (!inWhiteList && !pkgList[j].startsWith("com.android.providers")) {
                        activityManger.forceStopPackage(pkgList[j]);
                        
                    }
                }
            }
        }
        myActivityManager =(ActivityManager)context.getSystemService(Activity.ACTIVITY_SERVICE);
        myActivityManager.getMemoryInfo(memoryInfo) ;
        mAfterClearMem = memoryInfo.availMem;
        if (mAfterClearMem - mBeforeClearMem < MIN_MEM_CLEAR) {
            Toast.makeText(context, context.getResources().getString(R.string.clear_mem_no_need), Toast.LENGTH_LONG).show();

        } else {
            String memInfoString = Formatter.formatFileSize(context, mAfterClearMem - mBeforeClearMem);
            String toast = context.getResources().getString(R.string.clear_mem_release);
            Toast.makeText(context, String.format(toast, memInfoString), Toast.LENGTH_SHORT).show();

        }
    }

}
原文地址:https://www.cnblogs.com/wjhblogs/p/4818723.html