2010-01-08 46 views
13

中的活動我有一個後臺服務正在運行以及一個與服務交互的客戶端。服務回撥爲android

當客戶端請求某些操作時,服務執行它,它應該將結果發送回活動(客戶端)。

我知道如何調用活動中的服務方法並使用回調函數,我們可以實現我想要的操作。但是我無法理解Api demos(remoteservice)中提供的回調機制和代碼示例。

有人可以解釋這個服務回調是如何工作的;或者使用更簡單的機制可以實現的任何事情。

回答

5

這是流程
創建您的意圖調用服務。您可以startService()BindService()BIND_AUTO_CREATE

一旦服務是債券,它會創建一個隧道,它的客戶這是IBinder 接口交談。這是由您的AIDL接口實現並返回IBinder

private final MyServiceInterface.Stub mBinder = new MyServiceInterface.Stub() { 
    public int getNumber() { 
     return new Random().nextInt(100); 
    } 
}; 

public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "Service OnBind()", Toast.LENGTH_LONG).show(); 
    return mBinder; 
} 

一旦返回您在客戶端創建的mBinderServiceConnection會叫回來,你將可以通過該

獲得服務接口
  mConnection = new ServiceConnection() { 

     public void onServiceDisconnected(ComponentName name) { 
      // TODO Auto-generated method stub 

     } 

     public void onServiceConnected(ComponentName name, IBinder service) { 
      // TODO Auto-generated method stub 

      mService = MyServiceInterface.Stub.asInterface(service); 


    }; 

現在你得到了mService接口來調用和retreive從任何服務,

+3

如何讓調用從服務回報活動? – 2016-12-16 13:15:02