0
在Splash Activity
的onResume()
,我啓動服務這樣無法停止LocationListener的服務
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent i = new Intent(this, LocationService.class);
PendingIntent pi = PendingIntent.getService(this, 0, i,
PendingIntent.FLAG_UPDATE_CURRENT);
am.cancel(pi);
am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
ystemClock.elapsedRealtime() + 20000, 60000, pi);
和onStop()
,我停止服務這種方式
stopService(new Intent(this, LocationService.class));
和服務類是:
public class LocationService extends Service implements LocationListener {
private LocationManager mgr;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
//get Location details
mgr.requestLocationUpdates(LocationManager.GPS_PROVIDER,
10 * 60 * 1000, 50, this);
return START_NOT_STICKY;
}
private void dumpLocation(Location l) {
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onDestroy() {
super.onDestroy();
mgr.removeUpdates(this);
}
}
一旦我停止Splash Activity
的onStop()
的服務,LocationService
的onDestroy()
被觸發(這意味着服務停止?),但仍在運行AlarmManager
後指定的一分鐘後。
在停止服務之前,從'onResume()'中刪除'am.cancel(pi);'並在'onStop()'中使用它? – 2013-03-22 07:59:25
不,因爲你的活動擁有警報,所以應該停止它。但是,如果您希望服務停止時警報停止,則應在服務停止時取消該意圖 - 將兩個呼叫依次進行。如果您不希望鬧鈴在不在前臺時關閉,請在onStop中保留取消。 – 2013-03-22 08:03:04
是的。有效。非常感謝。 – 2013-03-22 08:09:59