#android
#Android
Вопрос:
Я создал функцию в activity
if (locationManager != null amp;amp; pendingIntent != null) {
locationManager.removeUpdates(pendingIntent);
}
Intent intent = new Intent("com.app.android.tracker.LOCATION_READY");
pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),
0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
//Register for broadcast intents
locationManager.requestLocationUpdates(provider,120000,0,pendingIntent); }
и при широковещательном приеме у меня есть
public class LocationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Logger.debug("LocationReceiver->onRceive");
Bundle b = intent.getExtras();
Location loc = (Location)b.get(android.location.LocationManager.KEY_LOCATION_CHANGED);
Logger.debug("Loc:" loc);
if(loc != null){
//
}
} }
и в манифесте у меня есть
<receiver android:name=".LocationReceiver">
<intent-filter>
<action android:name="com.app.android.tracker.LOCATION_READY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
теперь моя проблема в том, что при обновлении любого местоположения оно бесконечно транслируется, и мой эмулятор зависает.
и некоторое время это дает нулевое местоположение
Ответ №1:
Вам нужно прекратить запрашивать обновления местоположения. Вы можете сделать это, например, с помощью вашего метода onReceive:
LocationManager locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
locationManager.removeUpdates(this);