我有一个singleton
在我的Android项目中检索location updates
。 这适用于当我想使用getters
来获得我需要的值的情况。Android注册在活动中的位置更新
但是,对于我的其中一个activities
,我需要在发生位置更新时检索它。反正有“点击”进入singleton
检索位置更新,并根据我需要在activity
内处理它们?或者是有一些broadcast
位置已更新,并注册为broadcast
更新类似于我会做的iOS
?
这里是我有我的单身:
public class LocationSingleton implements LocationListener {
//Instance
private static LocationSingleton mInstance = null;
private static Context appContext;
private LocationSingleton(Context context) {
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, MINIMUM_DISTANCE, this);
}
public static LocationSingleton getInstance(Context context) {
if (mInstance == null) {
appContext = context.getApplicationContext();
mInstance = new LocationSingleton(appContext);
}
return mInstance;
}
/*
** Location methods
*/
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
Log.d("Location", "Provider disabled");
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
Log.d("Location", "Provider enabled");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
这样的单身人士由于各种原因是一个非常糟糕的主意。你为什么不使用'服务'来侦听位置更新?这将是一个更好的解决方案。点击位置更新意味着什么?只要您的“活动”处于打开状态,您是否想要收听位置更新?如果是的话,那么直接在你的'活动'中实现这一点会更好。 –
我正在传递应用程序上下文。也许单身并不是最好的主意,但我想要一种方式来收集整个应用程序打开时的位置数据(Singleton会存储它),并且可以选择在特定活动中侦听位置更新以更新用户地图。 –
这正是'LocationManager'已经为你做的。如果您真的想要独立于任何用户界面来监听位置更新,请使用“服务”。 –