实时数据更新

时间:2015-02-25 09:25:21

标签: android google-maps android-asynctask parse-platform real-time

我的应用使用谷歌地图实时显示用户的位置。因此,我希望我的Parse服务器上的每次数据更改都会更新。

我看了整个网络,我看到它有3个选项:

  1. 使用syncAdapter - 问题在于它写的任何地方都不是为了实时数据传输(我不是很明白为什么),另一方面它必须比更新每个更有效率5秒

  2. 使用asyncTask - 问题是它每5秒运行一次可能会消耗大量的电池和数据。

  3. 使用服务 - 与asyncTask相同的问题。

  4. 由于我非常困惑,请帮助我了解实施我的实时地图的适当方法。 谢谢所有

1 个答案:

答案 0 :(得分:0)

我知道的最好方法是使用LocationListener仅在更改位置时更新位置。您可以使用onLocationChanged()方法更新位置。

public class LocationHelper {
    private  LocationManager locationManager;
    private  Location currentLocation;

    public LocationHelper(Context context) {
            locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
            locationManager.removeUpdates(locationListener);
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
    }

    public void setLocation(Location location) {
        currentLocation = location;
    }

    private final LocationListener locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            setLocation(location);//Only update location if it has changed.
        }
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {}
        @Override
        public void onProviderEnabled(String provider) {}
        @Override
        public void onProviderDisabled(String provider) {}
    };
}

如果位置尚未更改,您只需记住上一个已知位置即可。