【问题标题】:In Android, given a PID, how to know its current running activity and services?在Android中,给定一个PID,如何知道它当前正在运行的活动和服务?
【发布时间】:2013-02-15 00:27:12
【问题描述】:

getRunningAppProcesses(),可以得到当前运行进程的所有PID。

但是给定一个PID,它的进程当前可能携带一个activity(在任务栈的顶部)或多个服务,如何知道这些activity或服务的名称?

【问题讨论】:

  • 什么是“当前”活动或服务?尤其是服务;多个可以同时运行。对于活动,至少您可以说是堆栈顶部的活动......
  • @kabuko 好的cmets,我会澄清这一点。

标签: android process


【解决方案1】:

对于服务,您可以调用getRunningServices 并按pid 过滤。对于活动,您可以使用getRunningTasks,然后为每个活动检索topActivity。您必须执行诸如按包过滤之类的操作,这很容易获得。

【讨论】:

    【解决方案2】:
        button.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            final Handler   handler = new Handler(); 
    
                final Runnable r = new Runnable() {
                    public void run() { 
                        Log.e("start", "stsrt");
    
    
                        ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
                        List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
                        List<RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
    
                        for (int i = 0; i < procInfos.size(); i++) {
                            Log.e("Running task", "Running task: " + procInfos.get(i).processName);
                        } 
                        handler.postDelayed(this, 1000);
                    } 
                }; 
    
                handler.postDelayed(r, 1000);
    
            }
        });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    相关资源
    最近更新 更多