当我的应用程序收到Intent时,如何向Dashclock发布更新?

我稍后在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类的扩展类中使用它。 这应该是某种可能的,但我似乎无法弄清楚如何。 关于如何实现这一目标的任何想法?

由于扩展服务必须发出publishUpdate调用,因此您的接近触发器广播接收器应使用类似广播或事件总线的内容来请求扩展程序发布更新。

如果未初始化扩展,意味着用户尚未添加或DashClock未运行,则不会发生任何事情,这是预期的正确行为。 DashClock启动并添加扩展后,将立即调用onUpdateData ,您将能够发布更新。

有关您可以使用的实际课程的一些想法,请参阅以下内容:

  • 全局广播 ,使用Context.sendBroadcast以及使用Context.registerReceiver在DashClockExtension动态注册的广播接收器。

  • 本地广播 ,使用LocalBroadcastManager 。

  • Otto或EventBus ,两个允许应用程序组件发布和订阅事件的框架。 在这种情况下,扩展程序订阅并且您的接近传感器发布。

可以在DashClock项目页面上的问题292中找到用于全局广播的完整代码片段。