我稍后在addProximityAlert类中使用Android的LocationManager方法添加了位置接近度。

当用户的电话位于特定区域时,LocationManager向我的应用程序的Intent发送BroadcastReciver,这是处理意图的类:

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.registerReceiverDashClockExtension中动态注册的广播接收器。
使用LocalBroadcastManager进行本地广播。
OttoEventBus,这两个框架允许应用程序组件发布和预订事件。在这种情况下,扩展程序将订阅并且您的接近传感器将发布。


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

09-27 23:57