0

上下文:如何创建某种 Timer/AlarmManger 机制,允许 LocationClient 在轮询位置之前连接两分钟。下面我粘贴了我在轮询位置之前延迟两分钟的尝试,但在睡眠模式下它似乎不起作用。

可能的解决方案:我可以使用 AlarmManager。然而,这将迫使我创建一个 SECOND 服务,然后使引用单个 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);
4

1 回答 1

2

这不是 LocationClient 的工作方式。相反,您应该等待两分钟,连接到位置服务,然后通过调用 getLastLocation() 获取当前位置。或者,您可以立即调用 requestLocationUpdates() 并持续 2 分钟,然后关闭连接或关闭更新。

于 2013-06-28T22:39:43.980 回答