0

我试图在调用 getLastLocation 之前给 LocationClient 两分钟的时间进行连接。最初我使用 Timer(和 TimerTask)实现了这一点,但由于 Timer 在睡眠模式下无法工作,我想将其转换为 AlarmManager。但是,考虑到 AlarmManager 调用另一个类,我对如何执行此操作有点困惑,而我想留在同一个类中并简单地延迟两分钟。

这就是 Timer 的外观。

 Timer theTimer = new Timer();
    theTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            if(checkIfGooglePlay() && checkTime()) {
                getPostLocation();
                stopSelf();
                mLocationClient.disconnect();
            }
        }
    }, TWO_MINUTES);
4

2 回答 2

1

警报管理器通过挂起的意图调用广播接收器。只需将该 BroadcastReceiver 实现作为注册它的类的私有子类即可。这样它就可以完全访问类成员变量和函数。

于 2013-07-01T16:18:24.350 回答
0

您可以尝试使用 Java 的Thread.sleep(). 这是一个静态方法,所以你不需要实例化一个新的Thread. 它抛出一个InterruptedException,在更简单的情况下,它不应该打扰你。

来自http://developer.android.com/reference/java/lang/Thread.html

使发送此消息的线程在给定的时间间隔内休眠(以毫秒和纳秒为单位)。

于 2013-07-01T16:12:18.837 回答