[英]Is it better to register for Location updates in Service or in Activity for Android?
[英]Android register for location updates in activity
我在Android项目中有一个用于检索location updates
的singleton
。 当我想使用getters
获取所需的值时,此方法很好用。
但是,对于我的一项activities
,我需要在位置更新发生时进行检索。 无论如何,是否有必要“敲入” singleton
以检索位置更新,并根据需要在activity
内部进行处理? 还是有某种方式可以broadcast
该位置已被更新,并注册类似于我在iOS
所做的broadcast
更新?
这是我单身的东西:
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
}
}
有什么办法可以“点击”单身人士
用ie侦听器扩展您的LocationSingleton
(坏名btw :),以便任何外部代码都可以在需要实时更新时挂接。 收到新位置后,您只需致电听众即可。 或者(使用OTTO,GreenRobot的事件总线)(可能更干净一些,并且您需要编写的代码更少)。 然后,您的LocationSingleton
将在每次位置更新时发出事件。 如果有任何其他代码想知道这一点,它只是订阅特定事件的总线,多数情况下就是这样。 如果不确定,请使用事件总线解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.