在Android中实现一个始终处于活动状态的计时器(即使在屏幕超时期间)

在Android中实现一个始终处于活动状态的计时器(即使在屏幕超时期间),第1张

概述我已经在我的android应用程序中实现了一个服务,该服务启动计时器(使用标准的java.util.Timer和java.util.TimerTask机制)以在预定义的时间间隔在后台进行一些处理.publicclassBackgroundProcessingServiceextendsService{privateintinterval;privateTimertimer=new

我已经在我的android应用程序中实现了一个服务,该服务启动计时器(使用标准的java.util.Timer和java.util.TimerTask机制)以在预定义的时间间隔在后台进行一些处理.

public class BackgroundProcessingService extends Service {private int interval;private Timer timer = new Timer();public voID onCreate() {    super.onCreate();    startTimer();}@OverrIDepublic voID onDestroy() {    timer.cancel();    super.onDestroy();}public int getInterval() {    return interval;}public voID setInterval(int interval) {    this.interval = interval;}private voID startTimer() {    timer.scheduleAtFixedrate( new TimerTask() {        public voID run() {            // perform background processing                }    }, 0, getInterval());    ; }@OverrIDepublic IBinder onBind(Intent intent) {    return null;}

}

服务是由我的应用程序像这样启动/停止的.

backgroundProcessingService = new Intent(getApplicationContext(), BackgroundProcessingService .class);startService(backgroundProcessingService);

只要电话处于活动状态(不发生屏幕超时),该服务就会正常运行,并且计时器将在定义的时间间隔内执行其工作.即使我退出了应用程序(使用“后退”按钮),计时器仍然保持活动状态.

但是,一旦电话进入超时状态,计时器任务将不再稳定运行.如果我将手机在超时状态下放置几个小时(晚上),我会发现在随机的情况下(有时间隔几个小时),计时器会启动.

同样,当电话再次启动时,所有排队的计时器运行都会突然执行一次,然后恢复到正常间隔.

即使在电话进入超时后,实现仍可正常运行的计时器的正确方法是什么.我应该使用PowerManager和WAKE_LOCKS(如此处所述http://code.google.com/android/reference/android/os/PowerManager.html),还是有另一种机制?

解决方法:

这就是AlarmManager的用途.

总结

以上是内存溢出为你收集整理的在Android中实现一个始终处于活动状态的计时器(即使在屏幕超时期间)全部内容,希望文章能够帮你解决在Android中实现一个始终处于活动状态的计时器(即使在屏幕超时期间)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1083194.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存