Android AlarmManager在同一类中调用函数

Android AlarmManager在同一类中调用函数,android,timer,location,alarmmanager,google-play-services,Android,Timer,Location,Alarmmanager,Google Play Services,在调用LocationClient上的getLastLocation之前,我尝试给它两分钟的连接时间。最初,我使用计时器(和TimerTask)实现了这一点,但由于计时器在睡眠模式下不工作,我想将其转换为AlarmManager。然而,考虑到AlarmManager调用另一个类,而我希望保持在同一个类中,并简单地延迟两分钟,我对如何执行此操作感到有点困惑 这就是计时器的外观 Timer theTimer = new Timer(); theTimer.schedule(new Time

在调用LocationClient上的getLastLocation之前,我尝试给它两分钟的连接时间。最初,我使用计时器(和TimerTask)实现了这一点,但由于计时器在睡眠模式下不工作,我想将其转换为AlarmManager。然而,考虑到AlarmManager调用另一个类,而我希望保持在同一个类中,并简单地延迟两分钟,我对如何执行此操作感到有点困惑

这就是计时器的外观

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

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

发件人:

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


Alarm Manager通过挂起的意图调用广播接收器。只需使BroadcastReceiver实现成为注册它的类的私有子类。这样,它就可以完全访问类成员变量和函数。

AlarmManager可以使用PendingEvent调用同一个类,因此我可以调用mLocationClient.connect(),然后在该类上创建一个PendingEvent,并在两分钟后设置AlarmManager?我不知道您的正确要求,但我已经了解到了什么程度,您应该使用服务类来实现这一点。它可以使用AlarmManager类唤醒,或者以正常的方式,使用接口与活动中的服务通信……这是一个可怕的想法。如果它在UI线程上,它将阻塞该线程并导致UI变得无响应,可能会启动看门狗计时器。如果它在另一个线程上,它将阻止该线程执行其工作。睡眠在99%的情况下是一个程序员不知道自己在做什么的标志。嗨@Gabe,我为这个noobish的后续问题道歉,但我不知道(并且相信这是不允许的)扩展两个类。如果我没有弄错的话,你建议我写一个新的子类,它扩展了两个类:public类,subclass扩展了第一个类,BroadcastReceiverNo,我说的是一个内部类。一个类可以包含第二个类。嗨@Gabe,调用接收方/服务仍然有点困难。我创建了一个新问题来解决此问题:。谢谢你的帮助。