打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
个人空间

内存清理(根据版本不同)

HTML/XML代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
ActivityManager activityManger=(ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
           List<ActivityManager.RunningAppProcessInfo> list=activityManger.getRunningAppProcesses();
           if(list!=null)
           for(int i=0;i<list.size();i++)
           {
               ActivityManager.RunningAppProcessInfo apinfo=list.get(i);
                
               System.out.println("pid            "+apinfo.pid);
               System.out.println("processName              "+apinfo.processName);
               System.out.println("importance            "+apinfo.importance);
               String[] pkgList=apinfo.pkgList;
                
               if(apinfo.importance>ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE)
               {
                  // Process.killProcess(apinfo.pid);
                   for(int j=0;j<pkgList.length;j++)
                   {
                       //2.2以上是过时的,请用killBackgroundProcesses代替
                       activityManger.restartPackage(pkgList[j]);
                   }
               }
 
 
 
 
public static ApplicationInfo getInfo(Context context, String name) {
        if (name == null) {
            return null;
        }
 
        for (ApplicationInfo appinfo : appList) {
            if (name.equals(appinfo.processName)) {
                return appinfo;
            }
        }
        return null;
    }
 
    public static void restartPackage(Context context, String packageName) {
        // Log.i("test", "packageName = " + packageName);
        ActivityManager am = (ActivityManager) context
                .getSystemService(Context.ACTIVITY_SERVICE);
        final int apiLevel = Build.VERSION.SDK_INT;
        if (apiLevel <= 7) {
            am.restartPackage(packageName);
        } else {
            am.killBackgroundProcesses(packageName);
            System.out.println("killed packageName is " + packageName);
        }
    }
描述:内在清理RunningAppProcessInfo 得到正在运行的进程信息pkgList:得到该进程下运行的包名importance:该进程的重要程度importance分为几个级别,数值越低就越重要。数值对应的重要性请看api,我判断是大于ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE的都杀掉,一般数值大于ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE的进程都长时间没用或者空进程了。最后通过for循环把包名对应进程杀掉:2.2版本以下的用activityManger.restartPackage(pkgList[j]); 对应权限<uses-permission android:name="android.permission.RESTART_PACKAGES" />2.2以上的用killBackgroundProcesses(包名); 对应权限<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />之前我以为可用android.os.Process.killProcess(pid);来杀掉其他进程,后来发觉不行
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
android手机root后的安全问题 (三) superuser db修改
【Android】判断你的应用在前台还是在后台
Android 显示 Activity 到前台
Android中获取正在运行的应用程序
Android自带setting的进程内存管理分析(三)
进程的信息(如图标,内存)获取和杀死,进程和服务是否运行的判断
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服