如何删除android服务类中的位置更新?
我有一个位置侦听器类和一个服务类。在我的位置监听器课程中,我启动GPS,并且每10秒获取一次位置。我的要求是在每天晚上7点之前停止GPS位置更新。我正在尝试使用RemoveUpdate停止服务中的GPS更新,但它不起作用。我怎样才能做到这一点。下面是我的代码 LocationGPS.java如何删除android服务类中的位置更新?,android,service,gps,locationlistener,Android,Service,Gps,Locationlistener,我有一个位置侦听器类和一个服务类。在我的位置监听器课程中,我启动GPS,并且每10秒获取一次位置。我的要求是在每天晚上7点之前停止GPS位置更新。我正在尝试使用RemoveUpdate停止服务中的GPS更新,但它不起作用。我怎样才能做到这一点。下面是我的代码 LocationGPS.java public class LocationGPS extends Activity implements LocationListener { @Override protected void onC
public class LocationGPS extends Activity implements LocationListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
public static LocationManager locationManager;
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10*1000 , 0 ,this);
Intent myIntent = new Intent(this, PIService.class);
PendingIntent sevenPMIntent = PendingIntent.getService(this, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 19);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
//alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, sevenPMIntent);
}
@Override
public void onLocationChanged(Location location) {
Toast.makeText(getApplicationContext(), "got new location", Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
java
public class PIService extends Service{
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand (Intent intent, int flags, int startId)
{
super.onStartCommand(intent, flags, startId);
//Get the system current time.
Date dt = new Date();
int hours = dt.getHours();
//Compare the current time with 7PM
if(hours == 19){
//if current time is 7PM
Toast.makeText(getApplicationContext(), "Now the time is 7PM", Toast.LENGTH_LONG).show();
LocationGPS.locationManager.removeUpdates(new LocationGPS()); //here is the place i am trying to remove the location updates.
}
}
return START_STICKY;
}
}
public void onDestroy(){
Log.e(标签“onDestroy”);
super.ondestory();
if(mLocationManager!=null){
for(int i=0;i
参考此问题这将有助于您在后台获取位置,而不是在频繁间隔中获取位置,如何在后台获取位置,而位置仅发生更改?mLocationListeners.length指定此如何获取侦听器列表
public void onDestroy()
{
locationManager.removeUpdates(this);
super.onDestroy();
}
public void onDestroy() {
Log.e(TAG, "onDestroy");
super.onDestroy();
if (mLocationManager != null) {
for (int i = 0; i < mLocationListeners.length; i++) {
try {
mLocationManager.removeUpdates(mLocationListeners[i]);
} catch (Exception ex) {
Log.i(TAG, "fail to remove location listners, ignore", ex);
}
}
}
}