Android - 如何使用PID获取processName或packageName?

时间:2011-12-17 03:24:03

标签: android process pid

我的问题:我可以使用哪些方法检索特定进程的processNamepackageName给定PID

因为在我的任务管理器中我想使用PID同时使用killBackgroundProcesses代码来终止进程。问题是我需要packageName / processName来做这件事,如果我让他们输入processName而不是只输入它的PID,那对用户来说会很麻烦。

这是我的任务经理的形象:

http://i.imgur.com/1zpXg.jpg

3 个答案:

答案 0 :(得分:19)

此代码是Yaqub代码的简化版本。我在Util类中使用它作为静态方法:

public static String getAppNameByPID(Context context, int pid){
    ActivityManager manager 
               = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

    for(RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()){
        if(processInfo.pid == pid){
            return processInfo.processName;
        }
    }
    return "";
}

答案 1 :(得分:12)

您好,您可以使用此代码,它适用于Android 2.3.3:

private String getAppName(int pID)
{
    String processName = "";
    ActivityManager am = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
    List l = am.getRunningAppProcesses();
    Iterator i = l.iterator();
    PackageManager pm = this.getPackageManager();
    while(i.hasNext()) 
    {
          ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo)(i.next());
          try 
          { 
              if(info.pid == pID)
              {
                  CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName, PackageManager.GET_META_DATA));
                  //Log.d("Process", "Id: "+ info.pid +" ProcessName: "+ info.processName +"  Label: "+c.toString());
                  //processName = c.toString();
                  processName = info.processName;
              }
          }
          catch(Exception e) 
          {
                //Log.d("Process", "Error>> :"+ e.toString());
          }
   }
    return processName;
}

答案 2 :(得分:2)

杀死其他进程通常是个坏主意..

查看此问题Android process killerandroid task kill ..

此博客Android: Killing a running process with processid(pid) and package name

对于你的问题如何从pid获取进程名称

类似的东西,

安装terminal emulator,启动它并运行:

ps | grep 10058

ps列出了所需ID的进程和grep过滤器。

但这仅在运行命令时运行应用程序时才有效。