android - android.location.PROVIDERS_CHANGED 在 GPS/Location 被手动打开设备时被多次触发
问题描述
我已经浏览了几个处理这个问题的资源,但没有一个令人满意的解释或解决方案。我浏览过的一些内容是:
打开/关闭 wifi 或 gps 时,我的 BroadcastReceiver 被调用了两次?
android.location.PROVIDERS_CHANGED BroadcastReceiver 多次触发
因此,我重新发布了这个问题。
问题陈述很简单,我有一个广播接收器,只要设备的 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() 被覆盖的方法被多次触发。为什么会这样?有没有办法解决这个问题?
解决方案
推荐阅读
- express - 有没有办法在 Google App Engine 中运行 NPM 脚本?
- mysql - 在 SQL 中计算平均值
- html - 从 GitHub 发布网页
- tensorflow - 这可能与 tf.tensor_scatter_nd_add
- python - 将数据框拆分为一行中的所有值
- azure - 使用 Azure EasyTables 进行身份验证 - Azure ActiveDirectory
- python - 即使使用 for 循环尝试删除它们,值仍然保留在我的列表中
- python - 当我将 [0] 添加到 face_encodings 时,如何修复 IndexError:列表索引超出范围?
- mysql - MySQL选择地理位置范围内的行
- excel - VBA Excel:尝试命名组织成行的动态范围