【问题标题】:android.location.PROVIDERS_CHANGED BroadcastReceiver fires off many timesandroid.location.PROVIDERS_CHANGED BroadcastReceiver 多次触发
【发布时间】:2023-04-07 10:38:01
【问题描述】:

我正在测试一个广播接收器并在我的日志中打印 GPS 的状态,以了解它是否按预期工作,我发现了一些奇怪的行为(也许这并不奇怪,但我没有期待它。)

每当切换 GPS 时,如果这是一段时间内的第一次,BroadcastReceiver 将需要一段时间才能接收到该事件,当它接收到时,它会触发多次(大约 10 次)。之后,当你打开和关闭它时,它每次都会被触发两次。

这是为什么?

这是我清单中的内容:

<receiver android:name=".receivers.GpsLocationReceiver" >
    <intent-filter>
        <action android:name="android.location.PROVIDERS_CHANGED" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>

【问题讨论】:

    标签: android gps broadcastreceiver locationmanager


    【解决方案1】:

    您可以使用 sharedpreference 和线程来避免这个问题 但这不是克服这个问题的正确方法

    我的方法如下

     @Override
        public void onReceive(Context context, Intent intent) {
    
    boolean flage=MainActivity.getpreference();
    
    if(!flage){
        MainActivity.putPreferens(true);
        Log.e("gpssss","gpssss");
    
        Thread thread = new Thread() {
            @Override
            public void run() {
                try {
    
    
    
    
                        sleep(2000);
    
                        MainActivity.putPreferens(false);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        };
    
        thread.start();
    
    
         }}
    
    }
    

    到主类我创建一个共享首选项并存储布尔值 false 广播剧

    【讨论】:

      猜你喜欢
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      相关资源
      最近更新 更多