我有一个IntentService,它应该获取用户位置,并根据它从互联网下载一些数据。我面临的问题是,很多时候,在调用onConnected()方法之前,服务就已经完成了。因此Location为空。这种情况不是经常发生,而是经常发生。
我可以做一些不同的事情(比如异步任务),但IntentService可以从活动(当用户按下按钮时)或使用AlarmManager(定期)调用。所以我不知道另一种方法。好吧,我可以创建一个异步任务,首先获取位置,然后启动IntentService。当从AlarmManager调用服务时,请执行一些不同的操作。但我必须创建不同的代码,以便在最后做同样的事情。
所以我的问题是,有没有办法解决这个问题,保留IntentService?或者还有其他更好的方法吗?
在广告中谢谢
Ps:我遵循了安卓开发者的指南:
https://developer.android.com/intl/es/training/location/retrieve-current.html
不要使用IntentService
-使用常规Service
和:
- 服务启动后开始侦听位置
- 当你取回一个位置时,启动一个后台线程来下载你的数据(如果你只想要一个位置,则停止位置更新)
- 下载完成后,请致电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他们会有位置,只要你想,他们就会随时可用。。。
问候。。。