我是否需要使用一个AlarmManager和激活锁定定期使用LocationClient?(Do I

2019-10-18 07:49发布

从一年前的帖子表明,它是需要使用激活锁定预留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;

Answer 1:

不过,我不明白为什么我不能简单地调用一个服务,每28分钟,连接LocationClient,设置定时器等待2分钟,然后拿到最近的位置,断开客户端,然后停止该服务。

你也许可以轮询LocationClient 。 但是,你仍然需要一个WakeLock ,作为该设备将这两分钟内入睡,否则,你仍然需要AlarmManager为“每28分钟”的一部分,我不知道是否LocationClient将对超出其他要求。



文章来源: Do I need to Use an AlarmManager and WakeLock to periodically use a LocationClient?