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

我已经在我的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();

}

@Override

public 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());

; }

@Override

public 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),还是有另一种机制?

解决方法:

标签:timeout,timer,android,service

来源: https://codeday.me/bug/20191105/1997109.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值