我有一個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'已經爲你做的。如果您真的想要獨立於任何用戶界面來監聽位置更新,請使用「服務」。 –