自分のアクティビティにデータ/更新を提供するだけでよい場合は、IPCは必要ありません。
これを実現するために、私はあなたが説明しているように見える方向を逆にし、アクティビティでメソッドを呼び出すサービスではなく、アクティビティが開始したとき/開始した場合に、アクティビティによって提供されたハンドラーにメッセージをプッシュします。
参照:
http ://developer.android.com/reference/android/os/Handler.html
http://mobileorchard.com/android-app-developmentthreading-part-1-handlers/
サービスからアクティビティに送信する必要があるものが常に同じタイプのオブジェクトである場合は、Message.objフィールドを使用してタイプを保持し、バンドルやパーセルに煩わされることなく、handleMessage()の実装を簡素化できることに注意してください。のように:
NotificationModelがサービスが常に送信するタイプであるアクティビティのハンドラーimpl:
private Handler mNotificationListener = new Handler(){
@Override
public void handleMessage(Message msg) {
handleIncomingNotification((NotificationModel)msg.obj);
}
};
このハンドラーにメッセージを投稿するサービス側は次のようになります。
public class NotificationRouter {
private Application mContext;
private SparseArray<Handler> mListeners = new SparseArray<Handler>();
public NotificationRouter (Application app){
this.mContext = app;
}
public void registerListener(Handler handler){
mListeners.put(handler.hashCode(), handler);
}
public void unRegisterListener(Handler handler){
mListeners.remove(handler.hashCode());
}
public void post(NotificationModel notice){
Message m = new Message();
m.obj = notice;
for (int i = 0; i < mListeners.size(); i++){
Handler h = mListeners.valueAt(i);
h.sendMessage(m);
}
}
}