我的应用使用谷歌地图实时显示用户的位置。因此,我希望我的Parse服务器上的每次数据更改都会更新。
我看了整个网络,我看到它有3个选项:
使用syncAdapter - 问题在于它写的任何地方都不是为了实时数据传输(我不是很明白为什么),另一方面它必须比更新每个更有效率5秒
使用asyncTask - 问题是它每5秒运行一次可能会消耗大量的电池和数据。
使用服务 - 与asyncTask相同的问题。
由于我非常困惑,请帮助我了解实施我的实时地图的适当方法。 谢谢所有
答案 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) {}
};
}
如果位置尚未更改,您只需记住上一个已知位置即可。