java定时器关闭再重启_Android定时器Timer的停止和重启实现代码

本文详细介绍了如何在Android中正确停止和重启Timer,避免"Timer already cancelled."错误。关键在于取消Timer后需将其设置为null。提供了完整的MainActivity示例代码,包括启动、暂停、恢复和停止计时器的功能。
摘要由CSDN通过智能技术生成

本文介绍了Android定时器Timer的停止和重启实现代码,分享给大家,具体如下:

7月份做了一个项目,利用自定义控件呈现一幅动画,当时使用定时器来控制时间,但是当停止开启时总是出现问题。一直在寻找合理的方法解决这个问题,一直没有找到,最近终于找到了合理的方法来解决这个问题。

大家如何查询有关资料,一定知道timer,timertask取消的方式是采用Timer.cancel()和mTimerTask.cancel(),可是大家发现这种发式取消后,再次开始timer时,会报错

FATAL EXCEPTION: main

Process: com.example.zhongzhi.gate_control_scheme, PID: 2472

java.lang.IllegalStateException: Timer already cancelled.

at java.util.Timer.sched(Timer.java:397)

at java.util.Timer.schedule(Timer.java:248)

at com.example.zhongzhi.gate_control_scheme.MainActivity.onClick(MainActivity.java:401)

at android.view.View.performClick(View.java:5637)

at android.view.View$PerformClick.run(View.java:22429)

at android.os.Handler.handleCallback(Handler.java:751)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:154)

at android.app.ActivityThread.main(ActivityThread.java:6119)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

这个问题的解决采用cancle(),取消timer后,还需要清空timer。合理的代码应该

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值