13
中的活動我有一個後臺服務正在運行以及一個與服務交互的客戶端。服務回撥爲android
當客戶端請求某些操作時,服務執行它,它應該將結果發送回活動(客戶端)。
我知道如何調用活動中的服務方法並使用回調函數,我們可以實現我想要的操作。但是我無法理解Api demos(remoteservice)中提供的回調機制和代碼示例。
有人可以解釋這個服務回調是如何工作的;或者使用更簡單的機制可以實現的任何事情。
中的活動我有一個後臺服務正在運行以及一個與服務交互的客戶端。服務回撥爲android
當客戶端請求某些操作時,服務執行它,它應該將結果發送回活動(客戶端)。
我知道如何調用活動中的服務方法並使用回調函數,我們可以實現我想要的操作。但是我無法理解Api demos(remoteservice)中提供的回調機制和代碼示例。
有人可以解釋這個服務回調是如何工作的;或者使用更簡單的機制可以實現的任何事情。
這是流程
創建您的意圖調用服務。您可以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;
}
一旦返回您在客戶端創建的mBinder
,ServiceConnection
會叫回來,你將可以通過該
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從任何服務,
如何讓調用從服務回報活動? – 2016-12-16 13:15:02