如何从服务回调到活动

Rog*_*ger 4 java android

很抱歉再次烦你,但我仍然找不到从我的活动到服务回调的方法......

发现了一个类似的问题 - 如何在Android中定义回调?

// The callback interface
interface MyCallback {
    void callbackCall();
}

// The class that takes the callback
class Worker {
   MyCallback callback;

   void onEvent() {
      callback.callbackCall();
   }
}

// Option 1:

class Callback implements MyCallback {
   void callback() {
      // callback code goes here
   }
}

worker.callback = new Callback();
Run Code Online (Sandbox Code Playgroud)

但不确定如何将该样本集成到我的项目中.

任何建议或链接清除教程都会很棒!

Cri*_*ian 10

您在示例中显示的那种回调(观察者模式)在服务和活动之间不起作用.当从A类创建 B类实例并希望将回调从B发送到A 时,使用观察者模式.

在服务和活动方面,情况完全不同.AFAICT,如果你想Activity从a 回调你Service,实现这个的最好方法是使用ResultReceiver.有很多有趣的事情ResultReceiver:

  • 它的构造函数接收Handler(您必须在活动内部创建),这将允许您从服务更改UI.
  • 它实现了Parcelable你可以ResultReceiverIntent你用来启动服务的额外内容中引用你的引用.
  • 它的onReceive方法有一个结果代码整数,允许你生成不同类型的回调(这就像你的回调接口有很多方法).此外,它还会收到一个Bundle可用于放置所有结果数据的内容.

另一方面,如果你想做一个回调(在这种情况下不确定这是否是正确的术语),从你Activity到你的Service,我想你将不得不发送一个广播消息或类似的东西.