如何从服务到活动进行回调

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

发现了一个类似的问题 – 如何在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(); 

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

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

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

在服务和活动方面,情况完全不同。 AFAICT,如果要从Service回调Activity ,实现此目的的最佳方法是使用ResultReceiver 。 关于ResultReceiver有很多有趣的事情:

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

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