稍后我在 LocationManager
类中使用 Android 的 addProximityAlert
方法添加了位置接近度。
当用户的手机位于特定区域时,LocationManager
会向我的应用程序的 BroadcastReciver
发送一个Intent
,这是处理 Intent :
public class ProximityTrigger extends BroadcastReceiver {
@Override
public void onReceive(Context ctxContext, Intent ittIntent) {
System.out.println(ittIntent.getIntExtra(WidgetService.KEY_STOP_IDENTIFIER, -1));
}
}
发生这种情况时,我想使用 DashClock API 来显示更新。 DashClock 有一个 publishUpdate
可用于显示更新的方法,但我只能从扩展 DashClock
的扩展类中使用它类(class)。这应该是可能的,但我似乎无法弄清楚如何。关于如何实现此目标的任何想法?
最佳答案
由于扩展服务必须发出 publishUpdate调用,您的接近触发广播接收器应该使用类似广播或事件总线的东西来要求扩展发布更新。
如果扩展没有初始化,意味着用户没有添加它或者 DashClock 没有运行,那么什么都不会发生,这是预期的正确行为。一旦 DashClock 启动并添加了您的扩展程序,onUpdateData将被调用,您将能够发布您的更新。
有关您可以使用的实际类的一些想法,请参见下文:
全局广播,使用Context.sendBroadcast连同使用 Context.registerReceiver 在您的
DashClockExtension
中动态注册的广播接收器.本地广播,使用LocalBroadcastManager .
- Otto或 EventBus ,两个让应用程序组件发布和订阅事件的框架。在这种情况下,扩展程序订阅并且您的接近传感器发布。
可以在 issue 292 中找到全局广播的完整代码 fragment 在 DashClock 项目页面上。
关于java - 当我的应用程序收到 Intent 时,如何发布对 Dashclock 的更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15567702/