我有一个用于使用FusedLocationApi来将用户的位置频繁发送到服务器的类。此类中设置了用于获取位置更新和与服务器通信的所有方法,但当我要运行此类时,我调用了一个后台服务,然后在其中使用该类。
使用FusedLocationApi.requestLocationUpdates
,该位置已正确发送到服务器,并且可以从此服务中看到 Toast 。但是当我检查android系统上的Running服务时,我的应用程序未在此处列出。
我的问题是,为什么我的服务不再运行但位置正在更新? FusedLocation服务本身就是后台服务吗?我是否需要通过后台服务经常调用它以使其保持活动状态,或者可以在活动中调用它,甚至在关闭应用程序后也可以使其继续运行?
这是我在自己的服务中使用类的方式:
public class LocationService extends Service {
FusedClass mylocation=new FusedClass(this);
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals("turnOn")) {
HandlerThread handlerThread = new HandlerThread("LocationThread");
handlerThread.start();
Handler handler = new Handler(handlerThread.getLooper());
handler.post(new Runnable() {
@Override
public void run() {
mylocation.LocationStartPoint();
}
});
}
if (intent.getAction().equals("turnOff")) {
stopSelf();
}
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
//TODO for communication return IBinder implementation
return null;
}
编辑:我使用FusedLocationApi.requestLocationUpdates
和onLocationChanged
从此API获取位置更新。