繁体   English   中英

Android注册活动中的位置更新

[英]Android register for location updates in activity

我在Android项目中有一个用于检索location updatessingleton 当我想使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM