基于Android中實(shí)現(xiàn)定時(shí)器的3種解決方法
一、采用Handler與線程的sleep(long)方法
二、采用Handler的postDelayed(Runnable, long)方法
三、采用Handler與timer及TimerTask結(jié)合的方法
下面逐一介紹:
一、采用Handle與線程的sleep(long)方法
Handler主要用來(lái)處理接受到的消息。這只是最主要的方法,當(dāng)然Handler里還有其他的方法供實(shí)現(xiàn),有興趣的可以去查API,這里不過(guò)多解釋。
1. 定義一個(gè)Handler類,用于處理接受到的Message。
Handler handler = new Handler() {
public void handleMessage(Message msg) {
// 要做的事情
super.handleMessage(msg);
}
};
2. 新建一個(gè)實(shí)現(xiàn)Runnable接口的線程類,如下:
public class MyThread implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(10000);// 線程暫停10秒,單位毫秒
Message message = new Message();
message.what = 1;
handler.sendMessage(message);// 發(fā)送消息
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
3. 在需要啟動(dòng)線程的地方加入下面語(yǔ)句:
new Thread(new MyThread()).start();
4. 啟動(dòng)線程后,線程每10s發(fā)送一次消息。二、采用Handler的postDelayed(Runnable, long)方法
這個(gè)實(shí)現(xiàn)比較簡(jiǎn)單一些。
1. 定義一個(gè)Handler類
Handler handler=new Handler();
Runnable runnable=new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//要做的事情
handler.postDelayed(this, 2000);
}
};
2. 啟動(dòng)計(jì)時(shí)器
handler.postDelayed(runnable, 2000);//每?jī)擅雸?zhí)行一次runnable
3. 停止計(jì)時(shí)器
handler.removeCallbacks(runnable);
三、采用Handler與timer及TimerTask結(jié)合的方法
1. 定義定時(shí)器、定時(shí)器任務(wù)及Handler句柄
private final Timer timer = new Timer();
private TimerTask task;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
// 要做的事情
super.handleMessage(msg);
}
};
2. 初始化計(jì)時(shí)器任務(wù)
task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
3. 啟動(dòng)定時(shí)器
timer.schedule(task, 2000, 2000);
簡(jiǎn)要說(shuō)一下上面三步提到的一些內(nèi)容:
1. 定時(shí)器任務(wù)(TimerTask)顧名思義,就是說(shuō)當(dāng)定時(shí)器到達(dá)指定的時(shí)間時(shí)要做的工作,這里是想Handler發(fā)送一個(gè)消息,由Handler類進(jìn)行處理。
2. java.util.Timer.schedule(TimerTask task, long delay):這個(gè)方法是說(shuō),dalay/1000秒后執(zhí)行task.只執(zhí)行一次。
java.util.Timer.schedule(TimerTask task, long delay, long period):這個(gè)方法是說(shuō),delay/1000秒后執(zhí)行task,然后進(jìn)過(guò)period/1000秒再次執(zhí)行task,這個(gè)用于循環(huán)任務(wù),執(zhí)行無(wú)數(shù)次,當(dāng)然,你可以用timer.cancel();取消計(jì)時(shí)器的執(zhí)行。
- js定時(shí)器怎么寫(xiě)?就是在特定時(shí)間執(zhí)行某段程序
- JavaScript定時(shí)器詳解及實(shí)例
- Javascript/Jquery——簡(jiǎn)單定時(shí)器的多種實(shí)現(xiàn)方法
- JS定時(shí)器實(shí)例
- 獲取焦點(diǎn)時(shí),利用js定時(shí)器設(shè)定時(shí)間執(zhí)行動(dòng)作
- js定時(shí)器的使用(實(shí)例講解)
- js定時(shí)器(執(zhí)行一次、重復(fù)執(zhí)行)
- JavaScript 定時(shí)器 SetTimeout之定時(shí)刷新窗口和關(guān)閉窗口(代碼超簡(jiǎn)單)
- 詳解小程序退出頁(yè)面時(shí)清除定時(shí)器
相關(guān)文章
Android自定義View實(shí)現(xiàn)課程表表格
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)課程表表格,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03Android Studio中配置OpenCV庫(kù)開(kāi)發(fā)環(huán)境的教程
這篇文章主要介紹了Android Studio中配置OpenCV庫(kù)開(kāi)發(fā)環(huán)境的教程,OpenCV有Java接口,因而也經(jīng)常被用來(lái)做安卓開(kāi)發(fā),需要的朋友可以參考下2016-05-05Android Studio實(shí)現(xiàn)簡(jiǎn)易計(jì)算器
這篇文章主要為大家詳細(xì)介紹了Android Studio實(shí)現(xiàn)簡(jiǎn)易計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Android中的Notification機(jī)制深入理解
這篇文章主要給大家介紹了關(guān)于Android中Notification機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02Android自定義ViewGroup實(shí)現(xiàn)側(cè)滑菜單
這篇文章主要為大家詳細(xì)介紹了Android如何通過(guò)自定義ViewGroup實(shí)現(xiàn)側(cè)滑菜單,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-01-01Android自定義view實(shí)現(xiàn)標(biāo)簽欄功能(只支持固定兩個(gè)標(biāo)簽)
這篇文章主要介紹了Android自定義view實(shí)現(xiàn)標(biāo)簽欄(只支持固定兩個(gè)標(biāo)簽),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06android實(shí)現(xiàn)okHttp的get和post請(qǐng)求的簡(jiǎn)單封裝與使用
這篇文章主要介紹了android實(shí)現(xiàn)okHttp的get和post請(qǐng)求的簡(jiǎn)單封裝與使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Android自定義View實(shí)現(xiàn)價(jià)格區(qū)間選擇控件
這篇文章主要為大家詳細(xì)介紹了Android如何利用自定義View實(shí)現(xiàn)價(jià)格區(qū)間選擇控件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-11-11Flutter?+?Idea?環(huán)境搭建及配置教程
本文主要總結(jié)我實(shí)際搭建的過(guò)程,最后發(fā)現(xiàn)不一定按網(wǎng)上那些博客或者官方文檔寫(xiě)的來(lái)也可以搭建成功,在這里小編給大家分享下Flutter?+?Idea?環(huán)境搭建及配置教程,感興趣的朋友參考下吧2021-12-12