【发布时间】:2012-06-20 15:11:54
【问题描述】:
我有一个实现 LocationListener 的前台服务。当服务被杀死时,它会继续得到修复。然而这就是我在onDestroy()中所说的
@Override
public void onDestroy() {
Log.e(getPackageName(), "Destroying GPSservice");
super.onDestroy();
running = false;
stopForeground(true);
locationManager.removeUpdates(EventService.this);
locationManager = null;
}
我有什么遗漏吗?
编辑
更多代码。这是在onCreate():
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String bestProvider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(bestProvider);
if (location != null) {
onLocationChanged(location);
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
3000L, 15.0f, this);
【问题讨论】:
-
添加更多信息,你的 locationListener 是如何实现的?
-
我真的不想听起来势利,但是:它的实现方式应该如此。 GPS 本身工作正常,但是当服务被杀死时,我希望 locationManager 删除服务的更新。相反,它不断得到修复。否则,我必须在这里复制很多代码..
-
发布更多代码以显示您的位置监听器是如何实现的
-
你知道你的
onDestroy()方法是否被调用了吗?你有绑定到你的服务的客户吗? -
我也有类似的问题。在我的情况下,问题与活动生命周期(developer.android.com/guide/components/…)有关。请注意如何在不调用 onDestroy 的情况下杀死 Activity,从而防止注册位置侦听器。
标签: android android-service android-location