2014-04-23 80 views
2

我有一個背景Service,即使應用程序被Android殺死,也需要運行這些背景。這目前正在完美運作。如何綁定到由另一個應用程序實例啓動的服務

我的問題是,當我重新啓動應用程序(後臺服務仍在運行)時,我希望我的Activity綁定到該服務以訪問其某些方法。當我嘗試綁定ServiceConnection時,onServiceConnected從不會被調用。

final private ServiceConnection serviceConnection = new ServiceConnection() { 

    public void onServiceConnected(ComponentName className, IBinder service) { 
     Log.d(TAG, "onServiceConnected"); //this is never called 
     MyBackgroundService.ServiceBinder binder = (MyBackgroundService.ServiceBinder) service; 
     backgroundService = binder.getService(); 
    } 

    public void onServiceDisconnected(ComponentName className) { 
     Log.d(TAG, "onServiceDisconnected"); 
     backgroundService = null; 
    } 

}; 

private void bindBackgroundService(){ 
    this.bindService(new Intent(this, MyBackgroundService.class), serviceConnection, Context.BIND_AUTO_CREATE); 
} 

我這樣做是錯誤的嗎?停止Service並重新啓動它會更好嗎?

+0

在'Activity'被銷燬之前,你是否解除了'Service'的綁定? – Emmanuel

+0

「我有一個需要運行的後臺服務,即使應用程序被Android殺死了」 - 如果Android終止託管服務的進程,服務就會消失。該服務可能會在某個時候重新啓動,具體取決於您從onStartCommand()返回的內容。 – CommonsWare

+0

@Emmanuel我嘗試,但onDestroy不經常被稱爲... –

回答

0

由於綁定後臺服務的類是一個單例,並且我的警報廣播接收器確保後臺服務始終在運行,所以實例化此單例,我有權訪問此單例,並試圖綁定到服務已經被綁定了。

相關問題