是否有可能创建每秒运行一次的警报?

时间:2015-11-04 14:07:39

标签: android alarmmanager alarm

Hello Guys

我想创建一个每秒运行一次的警报。我搜索了许多代码,但没有解决方案,请提供一些参考资料。

感谢 阿米特夏尔马

2 个答案:

答案 0 :(得分:0)

你可以这样做,创建一个CountDownTimer,说明你希望它在第一个参数中持续多长时间(以毫秒为单位),然后设置一段时间在第二个参数中运行一段代码。在onTick()方法中,这是将在第二个参数中指定的时间间隔内运行的代码,在倒计时结束时调用onFinish()。如果希望它运行,请调用CountDownTimer对象上的start()方法。

int howLongTimerLastsInMilliseconds =  3000 // 3000 milliseconds 
int tickEverySecond = 1000 // 1000 milliseconds == 1 second

CountDownTimer countDownTimer = new CountDownTimer(howLongTimerLastsInMilliseconds,tickEverySecond  ) {

                    @Override
            public void onTick(long millisUntilFinished) {
             //do some work every second  

            }

            @Override
            public void onFinish() {
              //do something when the time is up 
                }
        };

        countDownTimer.start();

答案 1 :(得分:0)

根据documentation

  

注意:从API 19(KITKAT)开始,警报传递是不准确的:操作系统   将移动警报以最小化唤醒和电池使用。那里   是支持需要严格交付的应用程序的新API   担保;请参阅setWindow(int,long,long,PendingIntent)和   setExact(int,long,PendingIntent)。应用程序   targetSdkVersion早于API 19将继续看到   以前的行为,其中所有警报都在何时传递   请求。

此问题也在code.googls.com处提出,以下是对此的解释:

  

可疑短距离5000毫米;扩展到60秒

     

这是按预期工作的,但目前不充分   记录(我们已经意识到问题的这一方面)。请讲   非常普遍:短期和近期的警报令人吃惊   电池成本高;需要短期或近期工作的应用   应该使用其他机制来安排他们的活动。

因此,没有内置的方法如何使用Alarm解决您的问题。你应该注意另一种机制或(非常粗略的解决方案)使用60个独立的警报