我在Android中使用LocationListener挣扎了一下。我想制作一个能够获取当前GPS位置的应用程序,然后再进行长时间的睡眠。一天或更多。在这段时间内,我希望GPS通知图标不显示。LocationListener正在休眠时关闭GPS图标
我现在有什么,是在onLocationChanged一个Thread.sleep(x),但这会保持图标在休眠期。我如何做到这一点,是否有比使用Thread.sleep更好的方法?
在此先感谢
我在Android中使用LocationListener挣扎了一下。我想制作一个能够获取当前GPS位置的应用程序,然后再进行长时间的睡眠。一天或更多。在这段时间内,我希望GPS通知图标不显示。LocationListener正在休眠时关闭GPS图标
我现在有什么,是在onLocationChanged一个Thread.sleep(x),但这会保持图标在休眠期。我如何做到这一点,是否有比使用Thread.sleep更好的方法?
在此先感谢
您必须完全关闭LocationManager。我在我的应用程序中执行了此操作,因为我每10秒钟只检查一次位置,因为我发现,关闭比存储位置管理器的min_distance或min_time节省了更多的电量。
喜欢的东西:
// Turning off
mLocationManager.removeUpdates(gpsListener);
mLocationManager = null;
// Turning on again
mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_MINTIME, GPS_MINDISTANCE, gpsListener);
的图标会消失,直到的LocationManager再次开启。
如果你有叠加,认为对他们关闭的位置太:
@Override
protected void onResume()
{
Log.i("ProjetTEA", "onResumeMain");
if (mLocationListener != null)
{
mLocationOverlay.enableMyLocation();
mLocationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(mBestProvider, 10000, 2, mLocationListener);
}
super.onResume();
}
@Override
protected void onPause()
{
Log.i("ProjetTEA", "onPauseMain");
mLocationOverlay.disableMyLocation();
mLocationManager.removeUpdates(mLocationListener);
mLocationManager = null;
super.onPause();
}
嘿Fluffball 是啊,我终于找到它了,做了它正是你描述的方式。我还了解到Thread.sleep很糟糕。阅读Handler类以及如何延迟任务。事实证明这很糟糕,因为我结束了递归函数。由于我有一个可变的延迟,我不能使用repeat-method。 我终于坚持与报警管理器,它的作品就像一个魅力。 感谢您的回复:) – Andreas 2010-07-31 11:39:06