0

컨텍스트 : LocationClient가 위치를 폴링하기 전에 LocationClient를 연결할 수 있도록하는 일종의 Timer/AlarmManger 메커니즘을 어떻게 만들 수 있습니까? 아래에 위치를 폴링하기 전에 2 분 동안 지연시키려는 시도를 붙여 넣었지만 절전 모드에서는 작동하지 않는 것으로 나타났습니다.LocationClient WakeLock을 사용하는 타이머

가능한 해결책 : 나는 AlarmManager를 사용할 수 있습니다. 그러나 이렇게하면 두 번째 서비스를 만들고 나면 매우 복잡한 단일 LocationClient를 참조하게됩니다. 이 사람의 접근법 (Using Google Play Services LocationClient in background service)을 따라갈 수도 있는데, onConnected 메서드에서 위치 폴링을 수행합니다.

나는 LocationClient의 작동 방식이 아닌

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); 

답변

2

... 어떤 권고가 내 onStartCommand 방법

을 조사해야하는지에 대한 사랑. 대신, 2 분 동안 기다렸다가 위치 서비스에 연결 한 다음 getLastLocation()을 호출하여 현재 위치를 가져와야합니다. 또는 requestLocationUpdates()를 2 분 동안 즉시 호출 한 다음 연결을 닫거나 업데이트를 해제 할 수 있습니다.

+0

안녕하세요 @ 조, LocationClient를 정의하고, 연결하라는 말을 듣고, 괜찮은 연결을 얻으려면 일정 시간 동안 기다렸다가 .getLastLocation()을 통해 해당 연결을 사용한 다음 연결을 해제해야한다고 생각했습니다. 귀하의 의견에 진심으로 감사드립니다! – NumenorForLife

관련 문제