繁体   English   中英

android.location.PROVIDERS_CHANGED BroadcastReceiver多次触发

[英]android.location.PROVIDERS_CHANGED BroadcastReceiver fires off many times

我正在测试广播接收器,并在日志中打印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>

您可以使用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广泛的演员表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM