您好,登录后才能下订单哦!
小编给大家分享一下Android如何使用Handler实现定时器与倒计时器功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
什么是Handler
Handler是Android消息机制的上层接口,它为我们封装了许多底层的细节,让我们能够很方便的使用底层的消息机制。Handler的最常见应用场景之一便是通过Handler在子线程中间接更新UI。Handler的作用主要有两个:一是发送消息;二是处理消息,它的运作需要底层Looper和MessageQueue的支撑。MessageQueue即消息队列,它的底层用单链表实现;Looper则负责在一个循环中不断从MessageQueue中取消息,若取到了就交由Handler进行处理,否则便一直等待。关于Looper需要注意的一点是除了主线程之外的其他线程中默认是不存在Looper的。主线程中之所以存在,是因为在ActivityThread被创建时会完成初始化Looper的工作。
特性
支持操作 :
start
pause
resume
cancel
使用
allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { ... compile 'com.github.xesam:AndroidTimer:v0.1' }
TODO
add ticker sequence
使用
CountTimer
new CountTimer(100) { @Override public void onTick(long millisFly) { // millisFly is the Elapsed time at *Running State* vCountSwitcher.setText((millisFly) + ""); Log.d("onTick", millisFly + ""); } };
CountDownTimer
new CountDownTimer(10_000, 100) { @Override public void onTick(long millisUntilFinished) { // millisUntilFinished is the left time at *Running State* Log.d("onTick", millisFly + ""); } @Override public void onCancel(long millisUntilFinished) { } @Override public void onPause(long millisUntilFinished) { } @Override public void onResume(long millisUntilFinished) { } @Override public void onFinish() { } };
使用一个 Handler 同时管理多个定时任务
创建多个任务:
MultiCountTimer multiCountTimer = new MultiCountTimer(100); multiCountTimer.add(new CounterTimerTask(1) { @Override public void onTick(long millisFly) { vMulti1.setText("multi_1:" + millisFly); } }).registerTask(new CounterTimerTask(2, 100) { @Override public void onTick(long millisFly) { vMulti2.setText("multi_2:" + millisFly); } }).registerTask(new CounterTimerTask(3, 1000) { @Override public void onTick(long millisFly) { vMulti3.setText("multi_3:" + millisFly); } }); multiCountTimer.startAll();
取消任务:
multiCountTimer.cancel(2); 或者 multiCountTimer.cancelAll();
截图:
以上是“Android如何使用Handler实现定时器与倒计时器功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。