Android, getLastLocation() from IntentService



我有一个IntentService,它应该获取用户位置,并根据它从互联网下载一些数据。我面临的问题是,很多时候,在调用onConnected()方法之前,服务就已经完成了。因此Location为空。这种情况不是经常发生,而是经常发生。

我可以做一些不同的事情(比如异步任务),但IntentService可以从活动(当用户按下按钮时)或使用AlarmManager(定期)调用。所以我不知道另一种方法。好吧,我可以创建一个异步任务,首先获取位置,然后启动IntentService。当从AlarmManager调用服务时,请执行一些不同的操作。但我必须创建不同的代码,以便在最后做同样的事情。

所以我的问题是,有没有办法解决这个问题,保留IntentService?或者还有其他更好的方法吗?

在广告中谢谢

Ps:我遵循了安卓开发者的指南:

https://developer.android.com/intl/es/training/location/retrieve-current.html

不要使用IntentService-使用常规Service和:

  1. 服务启动后开始侦听位置
  2. 当你取回一个位置时,启动一个后台线程来下载你的数据(如果你只想要一个位置,则停止位置更新)
  3. 下载完成后,请致电stopSelf停止服务

嗨,在你的情况下,我推荐什么。。。正在创建一个将更新当前位置的服务。。。你用坐标来计算你的var。。。让我给你看一个的例子

首先声明变量

public class MyService extends Service{
private LocationManager mLocationManager = null;
private static final int LOCATION_INTERVAL = 1000;
private static final float LOCATION_DISTANCE = 10f;
String sLat;
String sLong;

然后在你的位置上改变方法你收费sLat和sLong

public void onLocationChanged(Location location)
{
sLat = Double.toString(location.getLatitude());
sLong = Double.toString(location.getLongitude());

所以sLat和sLong他们会有位置,只要你想,他们就会随时可用。。。

问候。。。

最新更新