Android使用Handler實(shí)現(xiàn)定時(shí)器與倒計(jì)時(shí)器功能
什么是Handler
Handler是Android消息機(jī)制的上層接口,它為我們封裝了許多底層的細(xì)節(jié),讓我們能夠很方便的使用底層的消息機(jī)制。Handler的最常見(jiàn)應(yīng)用場(chǎng)景之一便是通過(guò)Handler在子線程中間接更新UI。Handler的作用主要有兩個(gè):一是發(fā)送消息;二是處理消息,它的運(yùn)作需要底層Looper和MessageQueue的支撐。MessageQueue即消息隊(duì)列,它的底層用單鏈表實(shí)現(xiàn);Looper則負(fù)責(zé)在一個(gè)循環(huán)中不斷從MessageQueue中取消息,若取到了就交由Handler進(jìn)行處理,否則便一直等待。關(guān)于Looper需要注意的一點(diǎn)是除了主線程之外的其他線程中默認(rèn)是不存在Looper的。主線程中之所以存在,是因?yàn)樵贏ctivityThread被創(chuàng)建時(shí)會(huì)完成初始化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() { } };
使用一個(gè) Handler 同時(shí)管理多個(gè)定時(shí)任務(wù)
創(chuàng)建多個(gè)任務(wù):
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();
取消任務(wù):
multiCountTimer.cancel(2); 或者 multiCountTimer.cancelAll();
截圖:
總結(jié)
以上所述是小編給大家介紹的Android使用Handler實(shí)現(xiàn)定時(shí)器與倒計(jì)時(shí)器功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android使用MediaCodec將攝像頭采集的視頻編碼為h264
這篇文章主要為大家詳細(xì)介紹了Android使用MediaCodec將攝像頭采集的視頻編碼為h264,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10Android ScrollView實(shí)現(xiàn)橫向和豎向拖動(dòng)回彈效果
這篇文章主要為大家詳細(xì)介紹了Android ScrollView實(shí)現(xiàn)橫向和豎向拖動(dòng)回彈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09Android自定義View仿微博運(yùn)動(dòng)積分動(dòng)畫效果
這篇文章主要為大家詳細(xì)介紹了Android自定義View仿微博運(yùn)動(dòng)積分動(dòng)畫效果,開(kāi)啟了自定義view學(xué)習(xí)旅程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05Android中實(shí)現(xiàn)ProgressBar菊花旋轉(zhuǎn)進(jìn)度條的動(dòng)畫效果
大家在一些頁(yè)面經(jīng)常會(huì)遇到加載中需要顯示一個(gè)加載動(dòng)畫,像旋轉(zhuǎn)的菊花旋轉(zhuǎn)的圈圈動(dòng)畫效果,本文通過(guò)實(shí)例代碼給大家講解下,需要的朋友參考下吧2021-09-09Android編程實(shí)現(xiàn)獲取標(biāo)題欄、狀態(tài)欄的高度、屏幕大小及模擬Home鍵的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)獲取標(biāo)題欄、狀態(tài)欄的高度、屏幕大小及模擬Home鍵的方法,涉及Android獲取手機(jī)常見(jiàn)信息的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Android 開(kāi)發(fā) 使用WebUploader解決安卓微信瀏覽器上傳圖片中遇到的bug
這篇文章主要介紹了Android 開(kāi)發(fā) 使用WebUploader解決安卓微信瀏覽器上傳圖片中遇到的bug問(wèn)題,本文給介紹的非常詳細(xì),需要的朋友可以參考下2016-11-11結(jié)合Windows窗口深入分析Android窗口的實(shí)現(xiàn)
在Android中,窗口是一個(gè)基本的圖形用戶界面元素,它提供了一個(gè)屏幕區(qū)域來(lái)放置應(yīng)用程序的用戶界面元素。窗口可以是全屏的,也可以是一個(gè)小的對(duì)話框。每個(gè)窗口都有一個(gè)特定的主題和樣式,可以根據(jù)應(yīng)用程序的需求進(jìn)行自定義2023-04-04Android應(yīng)用實(shí)現(xiàn)安裝后自啟動(dòng)的方法
今天小編就為大家分享一篇Android應(yīng)用實(shí)現(xiàn)安裝后自啟動(dòng)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08