java– 无法在android中的服务中启动计时器

java– 无法在android中的服务中启动计时器,第1张

概述我不知道发生了什么错误……我无法在我的服务启动计时器.遵循代码publicclassBkgServiceextendsService{privateTimerServUpdTimer=newTimer();privatestaticlongTMR_INTERVAL=10*60*1000;publicvoidonCreate(){super.onCreate();StartServUp

我不知道发生了什么错误……我无法在我的服务中启动计时器.遵循代码

public class BkgService extends Service{private Timer ServUpdTimer = new Timer();private static  long TMR_INTERVAL = 10*60*1000;public voID onCreate() {    super.onCreate();    StartServUpdateTask();    }private voID StartServUpdateTask() {        if(ServUpdTimer != null)            ServUpdTimer.cancel();        ServUpdTimer.scheduleAtFixedrate(new TimerTask() {            @OverrIDe            public voID run() {            }        }, 0, TMR_INTERVAL);    }}

但当我到达ServUpdTimer.scheduleAtFixedrate()行时,我得到以下异常

03-03 23:32:14.851: E/AndroIDRuntime(6083):
java.lang.RuntimeException: Unable to start service
mt.androID.app.BkgService@40544838 with Intent {
cmp=mt.androID.app/.BkgService }: java.lang.IllegalStateException:
Timer was canceled

如果有人可以对此有所了解,我将非常感激…

解决方法:

从Javadoc for Timer.cancel():

Once a timer has been terminated, its execution thread terminates gracefully, and no more tasks may be scheduled on it.

从Javadoc for Timer.scheduleAtFixedrate():

Throws: IllegalStateException – if task was already scheduled or cancelled, timer was cancelled, or timer thread terminated.

Timer立即被取消:您需要创建一个新实例:

private voID StartServUpdateTask() {    if(ServUpdTimer != null)    {        ServUpdTimer.cancel();    }    ServUpdTimer = new Timer();    ...}
总结

以上是内存溢出为你收集整理的java – 无法在android中的服务中启动计时器全部内容,希望文章能够帮你解决java – 无法在android中的服务中启动计时器所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存