• ANDROID获取Task及Process


    public class MyActivityManager extends ExpandableListActivity {
        private static final String NAME = "NAME";
        private static final String NO_USED = "NO_USED";
        private String[] groups = { "showRecentTask", "showRunningTasks",
                "showRunningAppProcesses", "showRunningServices" };
        private ExpandableListAdapter mAdapter;
    
        ActivityManager mAm;
        PackageManager mPM;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mAm = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
            mPM = this.getPackageManager();
    
            List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
            List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();
    
            for (int i = 0; i < groups.length; i++) {
                if (i == 0) {
                    showRecentTask();
                } else if (i == 1) {
                    showRunningTasks();
                } else if (i == 2) {
                    showRunningAppProcesses();
                } else {
                    showRunningServices();
                }
    
                Map<String, String> curGroupMap = new HashMap<String, String>();
                groupData.add(curGroupMap);
                curGroupMap.put(NAME, groups[i] + "(" + strChildren.size() + ")");
                curGroupMap.put(NO_USED, "");
    
                List<Map<String, String>> children = new ArrayList<Map<String, String>>();
                for (int j = 0; j < strChildren.size(); j++) {
                    Map<String, String> curChildMap = new HashMap<String, String>();
                    children.add(curChildMap);
                    curChildMap.put(NAME, strChildren.get(j));
                    curChildMap.put(NO_USED, "");
                }
                childData.add(children);
            }
    
            // Set up our adapter
            mAdapter = new SimpleExpandableListAdapter(this, groupData,
                    android.R.layout.simple_expandable_list_item_1, new String[] {
                            NAME, NO_USED }, new int[] { android.R.id.text1,
                            android.R.id.text2 }, childData,
                    android.R.layout.simple_list_item_1, new String[] { NAME,
                            NO_USED }, new int[] { android.R.id.text1,
                            android.R.id.text2 });
            setListAdapter(mAdapter);
        }
    
        public List<String> strChildren = new ArrayList<String>();
    
        // 最近开的task,HOME键长按会看到这个
        public void showRecentTask() {
            List<RecentTaskInfo> taskList = mAm.getRecentTasks(100, 0);
            strChildren.clear();
            for (RecentTaskInfo rti : taskList) {
                ResolveInfo ri = mPM.resolveActivity(rti.baseIntent, 0);
                if (ri != null) {
                    Log.e("showRecentTask", "" + ri.loadLabel(mPM));
                    strChildren.add(ri.loadLabel(mPM).toString());
                }
            }
        }
    
        // 运行中的任务
        public void showRunningTasks() {
            List<RunningTaskInfo> taskList = mAm.getRunningTasks(100);
            strChildren.clear();
            for (RunningTaskInfo rti : taskList) {
                Log.e("showRunningTasks", "Running task, numActivities="
                        + rti.numActivities);
                Log.e("showRunningTasks", ", description=" + rti.description);
                Log.e("showRunningTasks",
                        ", baseActivity=" + rti.baseActivity.getClassName());
                Log.e("showRunningTasks",
                        ", topActivity=" + rti.topActivity.getClassName());
                strChildren.add(rti.baseActivity.getClassName());
            }
        }
    
        // 运行中的作为app容器的process。
        public void showRunningAppProcesses() {
            List<RunningAppProcessInfo> processList = mAm.getRunningAppProcesses();
            strChildren.clear();
            for (RunningAppProcessInfo rapi : processList) {
                Log.e("showRunningAppProcesses", "" + rapi.processName);
                strChildren.add(rapi.processName);
            }
        }
    
        // 运行中的后台服务
        public void showRunningServices() {
            List<RunningServiceInfo> rsiList = mAm.getRunningServices(100);
            strChildren.clear();
            for (RunningServiceInfo rsi : rsiList) {
                Log.e("showRunningServices", "" + rsi.process);
                strChildren.add(rsi.process);
            }
        }
    }
  • 相关阅读:
    IIS寄托多网站找到对应ID的两种方式
    JMETER请求失败:空Header导致
    JMETER使用CURL导入功能
    浏览器调试技巧:使请求不实际发送出去来获取请求参数等场景
    dotnet 6 使用 string.Create 提升字符串创建和拼接性能
    XAML 给资源起个好名字 用 StaticResource 起一个别名
    dotnet 读 WPF 源代码笔记 为什么加上 BooleanBoxes 类
    DedeCMS子栏目
    DedeCMS文章列表
    DedeCMS页面分类
  • 原文地址:https://www.cnblogs.com/cnhome/p/2971649.html
Copyright © 2020-2023  润新知