从一年前的帖子表明,它是需要使用激活锁定预留CPU收集位置信息(CommonsWare特别是这里有AlarmManager的Android定期GPS位置更新服务内 )。 不过,我不明白为什么我不能简单地调用一个服务,每28分钟,连接LocationClient,设置定时器等待2分钟,然后拿到最近的位置,断开客户端,然后停止该服务。
由于Commonsware,谁在这里分叉他的例子中,用户( https://github.com/alexbirkett/cwac-locpoll/blob/master/src/com/commonsware/cwac/locpoll/LocationPollerService.java )用LocationListener的,而不是LocationClient,我想知道他的答案是否还aplies。
谢谢你的时间!
编辑:是不是这种简单的,其中一个AlarmManager调用一个服务,每28分钟数>服务获取激活锁定和两分钟定时器结束的LocationClient是连接>超过2分钟已经过去了,我可以杀死服务并释放激活锁定?
这将是这个样子:
PowerManager pm = (PowerManager) getBaseContext().getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();
Timer theTimer = new Timer();
theTimer.schedule(new TimerTask() {
@Override
public void run() {
if(checkIfGooglePlay()) {
getPostLocation();
w1.release();
stopSelf();
}
}
}, TWO_MINUTES);
return Service.START_NOT_STICKY;