gpt4 book ai didi

android - LocationManager.removeUpdates(listener) 不删除位置监听器

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:41 24 4
gpt4 key购买 nike

我的应用场景是我想跟踪员工的位置。我有一个广播接收器,它收听设备启动广播并注册一个警报管理器。当警报管理器滴答作响时,它会注册两个位置监听器,一个用于监听 gps,另一个用于网络。我希望当我在 onLocationChange() 方法中获得第一个位置更新时,保存位置并取消注册该位置监听器,以便当警报管理器再次滴答时,它不会重复。要取消注册,我将位置监听器作为静态对象在 onLocationChange() 中访问它们。但我发现它没有删除位置监听器。这是我的代码示例:

 public class BootTimeServiceActivator extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Calendar calendar = Calendar.getInstance();
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent mIntent = new Intent(context, MyBroadCastReceiver.class);
PendingIntent mPendingIntent = PendingIntent.getBroadcast(context, 0, mIntent, PendingIntent.FLAG_CANCEL_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 20 * 60 * 1000, mPendingIntent);


}

}

//..........

public class MyBroadCastReceiver extends BroadcastReceiver{

public static LocationManager locationManager;
public static MyLocationListener networkLocationListener;
public static MyLocationListener gpsLocationListener;



@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(context, "Alarm has been called...", Toast.LENGTH_SHORT).show();
initLocationListeners(context);
registerLocationListeners();

}

public void initLocationListeners(Context context) {
locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
networkLocationListener = new MyLocationListener(context);
gpsLocationListener = new MyLocationListener(context);

}

public void registerLocationListeners() {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, gpsLocationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 100, 0, gpsLocationListener);

}

}

\\.....

public class MyLocationListener implements LocationListener {

Context context;

public MyLocationListener(Context context) {
this.context = context;
}

@Override
public void onLocationChanged(Location location) {
if(location != null) {
SDCardService sdService = new SDCardService(context);
try {
sdService.logToDB(location);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("provider",location.getProvider());
if(location.getProvider().equals(LocationManager.GPS_PROVIDER)) {
MyBroadCastReceiver.locationManager.removeUpdates(MyBroadCastReceiver.gpsLocationListener);
}
else if(location.getProvider().equals(LocationManager.NETWORK_PROVIDER)) {
MyBroadCastReceiver.locationManager.removeUpdates(MyBroadCastReceiver.networkLocationListener);
}



}


}

谁能指导我哪里错了?

最佳答案

试试这个..

lmNetwork.removeUpdates(networkLocationListener);
lmGps.removeUpdates(gpsLocationListener);

关于android - LocationManager.removeUpdates(listener) 不删除位置监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12458070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com