以下是雙向消息傳送示例(從服務到活動和從活動到服務)。引述商務部:
你可以看到如何提供在 MessengerService.java(服務)的雙向通訊和 MessengerServiceActivities.java(客戶端)的樣品的例子。
以下是相關部分。
傳入的處理程序中的活動:
/**
* Activity Handler of incoming messages from service.
*/
class IncomingHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MessengerService.MSG_SET_VALUE:
mCallbackText.setText("Received from service: " + msg.arg1);
break;
default:
super.handleMessage(msg);
}
}
}
/**
* Activity target published for clients to send messages to IncomingHandler.
*/
final Messenger mMessenger = new Messenger(new IncomingHandler());
在服務上,只顯示相關部分:
/**
* Handler of incoming messages from clients.
*/
class IncomingHandler extends Handler {
@Override
public void handleMessage(Message msg) {
//obtain Activity address from Message
Messenger mClient=msg.replyTo;
try {
// try to send it some mValue
mClient.send(Message.obtain(null,MSG_SET_VALUE, mValue, 0));
} catch (RemoteException e) {
// The client is dead. Remove it
mClient=null;
}
}
}
/**
* Target we publish for clients to send messages to IncomingHandler.
*/
final Messenger mMessenger = new Messenger(new IncomingHandler());
- 你也可以
bind
爲您服務您的活動,並定期調用一個你的服務方法來檢查新的內容。爲此,如果您的服務是另一個應用程序,您必須使用使用aidl(這很難)。如果它在同一個包中,我建議你使用更簡單的'local service binding'
我的應用程序服務在同一個包中。即使使用Messenger,我也可以將消息從活動發送到服務。我需要從服務到活動的一些東西。可能不是定期調用某種方法。 –
@UmakantPatil我將活動<=>的鏈接附加到服務雙向通訊示例源。你會發現如何在那裏實現服務 - >活動消息傳遞。快樂編碼! –
@UmakantPatil在答案中直接添加樣本的相關部分 –