2015-03-08 6 views
0

Я тестирую широковещательный приемник и печатаю состояние GPS в своих журналах, чтобы понять, работает ли он по назначению, и я нашел какое-то странное поведение (возможно, это не является нечетным, но я этого не ожидал.)android.location.PROVIDERS_CHANGED BroadcastReceiver срабатывает много раз

Всякий раз, когда один переключенный 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> 

ответ

0

Вы можете избежать этой проблемы, используя 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(); 


    }} 

} 

к главному классу утру создать sharedpreference и хранить логическое значение ложно -х e широкий литой

Смежные вопросы