我正在尝试为LocationClient提供两分钟的连接时间,然后再调用getLastLocation。最初我使用Timer(和TimerTask)实现了这个,但由于Timers在sleepmode中不起作用,我想将它转换为AlarmManager。但是,我对如何执行此操作感到有点困惑,考虑到AlarmManager调用另一个类,而我想保持在同一个类中,只是延迟两分钟。
这就是Timer的外观。
Timer theTimer = new Timer();
theTimer.schedule(new TimerTask() {
@Override
public void run() {
if(checkIfGooglePlay() && checkTime()) {
getPostLocation();
stopSelf();
mLocationClient.disconnect();
}
}
}, TWO_MINUTES);
答案 0 :(得分:1)
警报管理器通过待处理的意图调用广播接收器。只需将BroadcastReceiver实现作为注册它的类的私有子类。这样它就可以完全访问类成员变量和函数。
答案 1 :(得分:0)
您可以尝试使用Java的Thread.sleep()
。这是一个静态方法,因此您无需实例化新的Thread
。它抛出InterruptedException
,在更简单的情况下,不应该打扰你。
来自http://developer.android.com/reference/java/lang/Thread.html:
使发送此消息的线程在给定的时间间隔内休眠(以毫秒和纳秒为单位)。