2013-12-09 56 views
0

我有一個Activity需要運行在一個單獨的進程(我已命名爲:ChildWebView)以解決方法an issue with WebViewDatabase。作爲解決方法的一部分,Activity完成後,我需要終止其進程。現在,我只需在該活動中調用android.os.Process.myPid(),並將結果返回給Intent內的 主過程。 父級 主進程有沒有辦法按名稱查找其 子配件進程之一的pid如何獲取配置爲在不同進程中運行的活動的pid?

+0

殺死它聽起來像一個壞主意。但是你可以通過/ proc像'ps'命令那樣通過/ proc來尋找一個由你自己的userid和一個cmdline所擁有的進程,包括你認爲應該命名的一個cmdline。如果你們之間有任何交流,你們也可以發現另一端來自通信機制的某些功能。請注意,該過程不是**你的孩子(否則這很容易),而是你的兄弟姐妹,另一個合子孩子。 –

+1

您的活動是否使用屬於您的應用程序的服務?如果是這樣,我相信你可以使用Binder.getCallingPid。順便說一句,我是瓦特/克里斯:這個活動聽起來真的很奇怪。 –

+0

我同意這很奇怪。不,沒有連接到此「活動」的服務。我可以很好地獲得pid,我只是假設會有更好的方法。 –

回答

1

這不需要任何特殊的權限。這非常簡單。

public void killProcessNamed(Context context, String processName) { 
     ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
     List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfoList = activityManager.getRunningAppProcesses(); 
     if (runningAppProcessInfoList != null) { 
      for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : runningAppProcessInfoList) { 
       if (runningAppProcessInfo.processName.equals(processName)) { 
        android.os.Process.killProcess(runningAppProcessInfo.pid); 
        break; 
       } 
      } 
     } 
    } 
相關問題