android 获取进程、服务、任务列表

来源:互联网 发布:excel两列数据相同合并 编辑:程序博客网 时间:2024/05/22 06:18




获取进程列表,需使用ActivityManager中的方法获取进程名;再根据进程名,获取应用程序的ApplicationInfo对象;用ApplicationInfo中的方法为进程加载图标和程序名称。获取服务、任务列表方法同上。

 

1 实例化ActivityManager

private ActivityManager mActivityManager;

mActivityManager=(ActivityManager)getSystemService(ACTIVITY_SERVICE);

 

2 获取各列表

//获取任务列表

    public void getTasks()

    {

       aryListTaskID=new ArrayList<String>();

       aryListTaskName=new ArrayList<String>();

       //getRunningTasks()取得进程TaskInfo

       List<ActivityManager.RunningTaskInfo> mRunningTasks=

           mActivityManager.getRunningTasks(intGetTaskCounter);

       for(ActivityManager.RunningTaskInfo amTask:mRunningTasks)

       {

           aryListTaskName.add(amTask.baseActivity.getClassName());

           aryListTaskID.add(""+amTask.id);

           intTaskNum++;

       }

       tab3_tv1.setText("任务数量:"+intTaskNum);

       tab3_tv2.setText("可用内存:"+fileSize(getAvailableRAM()));

    }

 

   //获取服务列表

    public void getService()

    {

       linkListServiceIcon=new LinkedList<Drawable>();

       aryListServiceInfo=new ArrayList<String>();

       aryListServiceName=new ArrayList<String>();

       List<ActivityManager.RunningServiceInfo> serivces =

           mActivityManager.getRunningServices(intGetServiceCounter);

       for (RunningServiceInfo service:serivces)

       {

           programUtil.setProcessName(service.process);

            //根据进程名,获取应用程序的ApplicationInfo对象

            ApplicationInfo tempAppInfo = packageUtil.getApplicationInfo(service.process);

           

            //为进程加载图标和程序名称

            if (tempAppInfo != null)

            {

            linkListServiceIcon.add(tempAppInfo.loadIcon(packageManager));

            aryListServiceName.add(tempAppInfo.loadLabel(packageManager).toString());

            }

            else

            {

            linkListServiceIcon.add(getApplicationContext().getResources().getDrawable(R.drawable.ic_launcher));

            aryListServiceName.add(service.process);

            }

          

           //MemInfo是否可得,不行则用包名代替

            if(!(mProcessMemoryUtil.getMemInfoByPid(service.pid)==""))

            {

            aryListServiceInfo.add(mProcessMemoryUtil.getMemInfoByPid(service.pid));

            }

            else

            {

            aryListServiceInfo.add(service.process);

            }

          

           intServiceNum++;

       }

      

       tab2_tv1.setText("服务数量:"+intServiceNum);

       tab2_tv2.setText("可用内存:"+fileSize(getAvailableRAM()));

    }

 

 

 

 

   //获取进程列表

    public void getProcess()

    {

       linkListProcessIcon=new LinkedList<Drawable>();     

       aryListProcessInfo=new ArrayList<String>();

       aryListProcessName=new ArrayList<String>();

       

       List<RunningAppProcessInfo> apps =

           mActivityManager.getRunningAppProcesses();

       for(RunningAppProcessInfo app:apps)

       {

           //包名

//         aryListProcessName.add(app.processName);

           programUtil.setProcessName(app.processName);

            //根据进程名,获取应用程序的ApplicationInfo对象

            ApplicationInfo tempAppInfo = packageUtil.getApplicationInfo(app.processName);

            //为进程加载图标和程序名称

            if (tempAppInfo != null)

            {

            linkListProcessIcon.add(tempAppInfo.loadIcon(packageManager));

            aryListProcessName.add(tempAppInfo.loadLabel(packageManager).toString());

            }

            else

            {

            linkListProcessIcon.add(getApplicationContext().getResources().getDrawable(R.drawable.ic_launcher));

            aryListProcessName.add(app.processName);

            }

            //MemInfo是否可得,不行则用包名代替

            if(!(mProcessMemoryUtil.getMemInfoByPid(app.pid)==""))

            {

            aryListProcessInfo.add(mProcessMemoryUtil.getMemInfoByPid(app.pid));

            }

            else

            {

            aryListProcessInfo.add(app.processName);

            }

           intProcessNum++;

       }

       tab1_tv1.setText("程序数量:"+intProcessNum);

       tab1_tv2.setText("可用内存:"+fileSize(getAvailableRAM()));

    }

 

3 PackageUtil.java :通过一个程序名返回该程序的一个ApplicationInfo对象

 

package com.me.myexplorer;

 

import java.util.List;

 

import android.content.Context;

import android.content.pm.ApplicationInfo;

import android.content.pm.PackageManager;

 

 

public class PackageUtil

{

    // ApplicationInfo类,保存了普通应用程序的信息,主要是指Manifest.xmlapplication标签中的信息

    private List<ApplicationInfo> allAppList;

   

    public PackageUtil(Context context) {

        //通过包管理器,检索所有的应用程序(包括卸载)与数据目录

        PackageManager pm = context.getApplicationContext().getPackageManager();

        allAppList = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);

        pm.getInstalledPackages(0);

    }

   

   

    public ApplicationInfo getApplicationInfo(String appName) {

        if (appName == null) {

            return null;

        }

        for (ApplicationInfo appinfo : allAppList) {

            if (appName.equals(appinfo.processName)) {

                return appinfo;

            }

        }

        return null;

    }

}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 信美分期没额度怎么办 家里人不给我钱怎么办 商场租金收不上来怎么办 魅蓝2电池坏了怎么办 格力空调不制冷怎么办 空调外机不好放怎么办 美的空调显示e3怎么办 发现安装空调条码被撕怎么办 删除了国美安装码怎么办 海信空调保修卡丢了怎么办 海尔空调保修卡丢了怎么办 科龙空调不制冷怎么办 魅族s6屏幕碎了怎么办 格力空调化霜怎么办 一开空调就跳闸怎么办 洗衣机顶盖的安全开关损坏怎么办 苹果平板电脑拍照坏了怎么办 苹果hom键不灵了怎么办 平板电脑home键发烫怎么办 华为平板无法输入资料怎么办 安卓平板没声音怎么办? 平果手机充不了电怎么办 苹果6s用电太快怎么办 平板充不起电了怎么办 日本买的电器国内售后怎么办 海淘地址试投不成功怎么办 怀孕了吐得厉害怎么办 玩网页游戏好卡怎么办 网页游戏占cpu高怎么办 微信有余额绑定其他名下怎么办 银行卡绑定支付余额不对怎么办 可乐机不制冷了怎么办 被淘宝卖家威胁怎么办 征信不好想贷款怎么办 急用钱征信不好怎么办 急用钱逾期不还怎么办 急用钱借款不还怎么办 做b超按压疼痛怎么办 做b超没有尿怎么办 b超憋不到尿怎么办 做b超前没有尿意怎么办