如何从服务回调到活动

时间:2011-09-02 12:13:31

标签: java android

很抱歉再次打扰你,但我仍然无法找到从我的活动回复服务的方法......

发现了类似的问题 - How to Define Callbacks in 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();

但还不确定如何将该示例集成到我的项目中。

任何有关明确教程的建议或链接都​​会很棒!

1 个答案:

答案 0 :(得分:9)

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

关于服务和活动,情况完全不同。 AFAICT,如果您想从Activity回复Service,则实现此目的的最佳方法是使用ResultReceiver。关于ResultReceiver

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

另一方面,如果你想进行回调(在这种情况下不确定这是否是正确的术语),从ActivityService,我想你将不得不发送广播信息或类似的东西。