很抱歉再次打扰你,但我仍然无法找到从我的活动回复服务的方法......
发现了类似的问题 - 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();
但还不确定如何将该示例集成到我的项目中。
任何有关明确教程的建议或链接都会很棒!
答案 0 :(得分:9)
您在示例中显示的那种回调(观察者模式)在服务和活动之间不起作用。当从A类开始创建B类的实例并希望将回调从B发送到A时,使用观察者模式。
关于服务和活动,情况完全不同。 AFAICT,如果您想从Activity
回复Service
,则实现此目的的最佳方法是使用ResultReceiver
。关于ResultReceiver
:
Handler
(您必须在活动中创建),这将允许您从服务中更改UI。Parcelable
,因此您可以将ResultReceiver
的引用放在用于启动服务的Intent
个附加内容中。onReceive
方法有一个结果代码整数,允许你生成不同类型的回调(这就像你的回调接口有很多方法一样)。此外,它会收到Bundle
,您可以使用它来存储所有结果数据。另一方面,如果你想进行回调(在这种情况下不确定这是否是正确的术语),从Activity
到Service
,我想你将不得不发送广播信息或类似的东西。