来自IntentService的Android,getLastLocation()

时间:2014-02-24 20:41:41

标签: android service get location intentservice

我有一个IntentService,它应该获取用户位置,并根据它从Internet下载一些数据。我面临的问题是,很多时候,在调用onConnected()方法之前,服务已经完成。所以Location是null。它不会一直发生,但经常发生。

我可以以某种方式做到不同(如asynctask),但可以从活动(当用户按下按钮时)或使用AlarmManager(定期)调用IntentService。所以我不知道另一种方法。好吧,我可以创建一个首先获取位置的asynctask,然后启动IntentService。从AlarmManager调用Service时,执行不同的操作。但是我必须创建不同的代码,最后才能做同样的事情。

所以我的问题是,有没有办法解决它,保留IntentService?或者还有另一种更好的方法吗?

先谢谢。

Ps:我已经按照Android开发者的指南进行了操作:

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

2 个答案:

答案 0 :(得分:0)

嗨,我建议您使用的是...创建一个将更新当前位置的服务......然后用坐标为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;

然后在你的on locationChange方法中为sLat和sLong充电

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

所以sLat和sLong他们将拥有该位置,他们将随时可用...

...问候

答案 1 :(得分:0)

请勿使用IntentService - 使用常规Service和:

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