首页 > 解决方案 > android.location.PROVIDERS_CHANGED 在 GPS/Location 被手动打开设备时被多次触发

问题描述

我已经浏览了几个处理这个问题的资源,但没有一个令人满意的解释或解决方案。我浏览过的一些内容是:

关闭 GPS 时广播接收器调用 2 次?

打开/关闭 wifi 或 gps 时,我的 BroadcastReceiver 被调用了两次?

android.location.PROVIDERS_CHANGED BroadcastReceiver 多次触发

如何在一次广播中捕捉 GPS?

因此,我重新发布了这个问题。

问题陈述很简单,我有一个广播接收器,只要设备的 GPS/位置状态发生变化,就会触发它。问题是 onReceive() 方法被多次调用(准确地说是 4 次)。

我已经在我的清单文件中注册了我的接收器(并且没有其他地方):

        <receiver android:name=".broadcasts.DeviceGpsStatusReceiver">
            <intent-filter>
                <action android:name="android.location.PROVIDERS_CHANGED" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>

我还确保此接收器未在我的应用程序中的其他任何地方注册。

广播接收器设计如下:

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
            // my content
        }
    }

即使进行了这种更改,我也看到 onReceive() 被覆盖的方法被多次触发。为什么会这样?有没有办法解决这个问题?

标签: androidbroadcastreceiverandroid-gps

解决方案


推荐阅读