2016-01-28 47 views
3

在檢測過程中主要的應用程序類的運行我有一個擴展Application類,有很多應用組件(服務,活動和廣播接收器)沿着三個不同的進程中運行Android應用程序。Android的 - 在一個多進程應用

每個進程將盡快啓動它實例化Application類。所以我一直在尋找如何檢查Application類代碼的內部,如果實例是由主應用程序進程擁有的,但我一直無法找到它。

我的清單看起來是這樣的:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:name=".MyApplication" 
    android:theme="@style/AppTheme" > 

    <activity 
     android:name="..."> 
     ... 
    </activity> 

    <activity 
     android:name="..."> 
     ... 
    </activity> 

    <service android:name="..." > 
    </service> 

    <service android:name="..." 
     android:process=":SecondProcess" > 
    </service> 

    <service android:name="..." 
     android:process=":ThirdProcess" > 
    </service> 

接下來是我的Application類實現:

public class MyApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     if (is this instance being ran on the main process?) { 
      // Do something 
     } 
    } 

} 

有誰知道如何檢查實例是在主進程中運行?

+1

可能重複[有沒有辦法在Android中獲取當前進程名稱](http://stackoverflow.com/questions/19631894/is-there-a-way-to-get-current-process在Android中名稱 – Nachi

+0

@Nachi顯然不是重複的,因爲它們的焦點都不同。一種是比另一種可以使用的方法。 – Storo

回答

0

尋找答案了同樣的問題。

到目前爲止,我發現是使用可以找到從進程ID當前正在運行的進程,並把檢查是否在的onCreate。

public void onCreate(){ 
... 
String processName = getProcessName(); 
switch(processName){ 
    case process1: 
     // do something 
     break; 
    case process2: 
     // do something 
     break; 
    .... 

} 
+0

「Application」類沒有'getProcessName()'方法。 – Storo

+0

是沒有直接的方法,但你可以找到的進程名.. 檢查這個http://stackoverflow.com/questions/19631894/is-there-a-way-to-get-current-process-name-in -Android – user2662821

相關問題