我有一个深埋在 SDK 中的 java 类,它执行一个操作并返回一个布尔值。它不知道应用程序的主要活动,但我需要主要活动来接收该布尔值。
我见过很多关于回调、广播和监听器的问题,但他们似乎都了解该活动。我的 pojo 确实有一个 ActivityContext,但我不知道如何将值返回到应用程序的主要活动。
我已经在我的 pojo 中使用了 AsyncTask,并且正在尝试弄清楚如何以应用程序的主要活动可以接收它的方式在 onPostExecute 方法中发送布尔值。
有人知道怎么做这个吗?
我建议使用消息总线或可观察/观察者模式.
广场有Otto http://square.github.io/otto/一个不错的小型开源库,它实现了消息总线。
观察者模式在以下位置有很好的描述:维基百科 http://en.wikipedia.org/wiki/Observer_pattern例如。
无论哪种方式,你必须做的基本上就是开始监听你的 POJO(如果你将其设置为 Observable),或者订阅总线事件onResume()
(or onStart()
)并停止监听onPause()
在你的活动中。
BUS
我更喜欢总线,因为它是松散耦合的,并且您可以将任意 POJO 发送到总线,并且仅侦听一种特定类型。
所以你发布一条消息:
bus.post(new SomethingICareAbout("I really really do"));
以及代码库中的其他位置(在您的活动中的情况下):
@Subscribe
public void onSomethingIcareAbout(SomethingICareAbout thingsAndStuff) {
// TODO: React to the event somehow. Use what you received.
}
@Subscribe
public void onSomethingElseIcareAbout(SomethingElseICareAbout otherThings) {
// TODO: React to the event somehow. Use what you received.
}
上面是有意简化的,您仍然需要创建总线并订阅它,但您会在文档中找到:P
它还使用注释并且非常轻量级(代码方面)。
观察者/可观察者
另一方面,Observer/Observable 是 Java 的一部分,因此它是内置的。但它是紧密耦合的,您的 Activity 必须实现 Observer,您的 POJO 将实现 Observable,并且您必须在 Activity 中实现 update() 方法,无论您通过 Observable 发送什么内容,这个都会获得所有更新。
我希望这有点道理:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)