Таймер LocationClient в службе с WakeLock

Контекст: как я могу создать какой-то механизм Timer/AlarmManger, который позволяет LocationClient подключаться в течение двух минут перед опросом местоположения. Ниже я вставил свою попытку задержки на две минуты перед опросом местоположения, но, похоже, она не работает в спящем режиме.

Возможные решения: я мог бы использовать AlarmManager. Однако это заставит меня создать ВТОРОЙ сервис, а затем очень усложнит обращение к одному LocationClient. Я также мог бы следовать подходу этого человека (Использование Google Play Services LocationClient в фоновой службе), где в методе onConnected он выполняет опрос местоположения.

Я хотел бы получить любые рекомендации относительно того, что я должен изучить

В моем методе onStartCommand...

wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");

    wl.acquire();

    //Getting and Posting Location 
    Log.i("localwordservice", "Creating and Connecting mLocationClient");
    mLocationClient = new LocationClient(this, this, this);
    mLocationClient.connect();

    Timer theTimer = new Timer();
    theTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            if(checkIfGooglePlay()) {
                System.out.println("TIMER is now iniating post location");
                getPostLocation();
                System.out.println("wake lock being released!");
                wl.release();
                System.out.println("The Service is being stopped!");
                stopSelf();
            }
        }
    }, TWO_MINUTES);

person NumenorForLife    schedule 28.06.2013    source источник


Ответы (1)


Это не то, как работает LocationClient. Вместо этого вы должны подождать две минуты, подключиться к службам определения местоположения, а затем получить текущее местоположение, вызвав getLastLocation(). В качестве альтернативы вы можете немедленно вызвать requestLocationUpdates() продолжительностью 2 минуты, а затем либо закрыть соединение, либо отключить обновления.

person Joe Malin    schedule 28.06.2013
comment
Привет, @Joe, я думал, что LocationClient нужно определить, сказать подключиться, подождать некоторое время, чтобы получить приличное соединение, использовать это соединение через .getLastLocation(), а затем отключиться. Я очень ценю ваши отзывы! - person NumenorForLife; 30.06.2013