如何从服务到活动进行回调
很抱歉再次打扰你,但我仍然找不到从我的活动到服务回调的方法……
发现了一个类似的问题 – 如何在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
,我想你将不得不发送一个广播消息或类似的东西。