2013-07-15 59 views
1

我開發一個Android服務,我用下面的代碼自動啓動:啓動2個相同服務的實例?

的AndroidManifest.xml:

<!-- Declare Boot Completed Broadcast Receiver, For Service Auto-Start on Boot --> 
    <receiver android:name=".utils.os.ServiceAutoStart"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </receiver> 

ServiceAutoStart.java:

public class ServiceAutoStart extends BroadcastReceiver 
{ 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     // Start Patch Service On Boot 
     context.startService(new Intent(context, PatchService.class)); 
    } 
} 

另外,我有使用startService()和bindService()啓動並綁定到服務的「查看器」。大部分情況下,一切都按預期工作。最近我注意到,如果立即在我的Android設備啓動時立即打開「查看器」應用程序,我似乎創建了2個服務實例(請參見下圖)。我不認爲有可能創建2個相同服務的實例。這裏發生了什麼?我誤解了我在DDMS中看到的內容嗎?

enter image description here

回答

1

我似乎創建服務的2實例(見下圖)

如果你指的是調試的過程在左側的半絕密名單,他們是兩個獨立的應用程序。一個是com.XXXX.service,另一個是com.XXXX.serviceremote

我不認爲這是可能創造相同的服務

的兩個實例它不是。它們是單獨應用程序中單獨服務的單獨實例。

+0

處理自動啓動代碼的進程是否與DDMS中的服務分開顯示?那是我所看到的嗎? –

+0

@JesseJ:不,你已經編寫並安裝了三個獨立的應用程序。你可以在DDMS中看到他們的軟件包名稱(在你的截圖中編輯)。這些應用程序大概沒有通過精靈魔法或工作空間外星人到達那裏。他們在那裏是因爲你寫了他們,你安裝了他們,而且你正在運行啓動他們三個的代碼。爲什麼你這樣做,以及你期望從這三個應用程序中得到什麼,我不能說。 – CommonsWare

+0

@JesseJ:你的問題和評論表明你認爲應該只有一個應用程序。有三個應用程序。如果您不知道這些應用是什麼或者他們爲什麼在那裏,請從您的設備上卸載它們,然後查看您是否在LogCat中獲得與這些神祕額外應用綁定的錯誤/警告。 – CommonsWare

相關問題