AlarmManager在同一类中调用函数

时间:2013-07-01 16:04:20

标签: android timer location alarmmanager google-play-services

我正在尝试为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);

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

  
    

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