android.location.PROVIDERS_CHANGED 在设备上手动切换 GPS/位置时多次触发

man*_*521 5 android broadcastreceiver android-gps

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

关闭 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>
Run Code Online (Sandbox Code Playgroud)

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

广播接收器的设计如下:

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

即使进行了此更改,我仍然看到 onReceive() 重写方法被多次触发。为什么会这样呢?有办法解决这个问题吗?