Android實(shí)現(xiàn)定時(shí)任務(wù)功能
本文實(shí)例為大家分享了Android實(shí)現(xiàn)定時(shí)任務(wù)功能的具體代碼,供大家參考,具體內(nèi)容如下
1、采用Handle與線程的sleep(long)方法
(1)、定義一個(gè)Handler類(lèi),用于處理接受到的Message。
Handler handler = new Handler() { ?
? ? public void handleMessage(Message msg) { ?
? ? ? ? // 要做的事情 ?
? ? ? ? super.handleMessage(msg); ?
? ? } ?
}; (2)、新建一個(gè)實(shí)現(xiàn)Runnable接口的線程類(lèi),如下:
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(); ?
2、采用Handler的postDelayed(Runnable, long)方法
(1)、定義一個(gè)Handler類(lèi)
Handler handler=new Handler(); ?
?
Runnable runnable=new Runnable() { ?
? ? @Override ?
? ? public void run() { ?
? ? ? ? // TODO Auto-generated method stub ?
? ? ? ? //要做的事情 ?
? ? ? ? handler.postDelayed(this, 2000); ?
? ? } ?
}; (2)、啟動(dòng)
handler.postDelayed(runnable, 2000);
3、用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)和關(guān)閉定時(shí)器
timer.schedule(task, 2000, 3000); ?? timer.cancel();
4、采用AlarmManger實(shí)現(xiàn)長(zhǎng)期精確的定時(shí)任務(wù)
(1)、服務(wù)類(lèi):
public class HorizonService extends Service {
? ? @Override
? ? public IBinder onBind(Intent intent) {
? ? ? ? return null;
? ? }
? ? @Override
? ? public int onStartCommand(Intent intent, int flags, int startId) {
? ? ? ? new Thread(new Runnable() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? Log.d("TAG", "打印時(shí)間: " + new Date().
? ? ? ? ? ? ? ? ? ? ? ? toString());
? ? ? ? ? ? }
? ? ? ? }).start();
? ? ? ? AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
? ? ? ? int five = 5000; // 這是5s
? ? ? ? long triggerAtTime = SystemClock.elapsedRealtime() + five;
? ? ? ? Intent i = new Intent(this, AlarmReceiver.class);
? ? ? ? PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
? ? ? ? manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi);
? ? ? ? return super.onStartCommand(intent, flags, startId);
? ? }
}(2)、廣播接受器
public class AlarmReceiver extends BroadcastReceiver {
? ? @Override
? ? public void onReceive(Context context, Intent intent) {
? ? ? ? Intent i = new Intent(context, HorizonService.class);
? ? ? ? context.startService(i);
? ? }
}(3)、啟動(dòng)定時(shí)任務(wù):
Intent intent = new Intent(this,HorizonService.class); startService(intent);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實(shí)現(xiàn)簡(jiǎn)易記事本
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)易記事本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android學(xué)習(xí)筆記之應(yīng)用單元測(cè)試實(shí)例分析
這篇文章主要介紹了Android學(xué)習(xí)筆記之應(yīng)用單元測(cè)試,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android單元測(cè)試的實(shí)現(xiàn)原理與具體步驟,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Android實(shí)現(xiàn)圖像灰度化、線性灰度變化和二值化處理方法
這篇文章主要介紹了Android實(shí)現(xiàn)圖像灰度化、線性灰度變化和二值化處理方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Flutter實(shí)現(xiàn)可以縮放拖拽的圖片示例代碼
這篇文章主要給大家介紹了關(guān)于利用Flutter實(shí)現(xiàn)可以縮放拖拽的圖片的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Android編程獲取地理位置的經(jīng)度和緯度實(shí)例
這篇文章主要介紹了Android編程獲取地理位置的經(jīng)度和緯度實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Android操作系統(tǒng)服務(wù)調(diào)用GPS實(shí)現(xiàn)定位的相關(guān)技巧,需要的朋友可以參考下2016-01-01
Android檢測(cè)手機(jī)多點(diǎn)觸摸點(diǎn)數(shù)的方法
這篇文章主要為大家詳細(xì)介紹了Android檢測(cè)手機(jī)多點(diǎn)觸摸點(diǎn)數(shù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Android照片墻應(yīng)用實(shí)現(xiàn) 再多的圖片也不怕崩潰
這篇文章主要為大家詳細(xì)介紹了Android照片墻應(yīng)用實(shí)現(xiàn),再多的圖片也不怕崩潰,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
詳解Android系統(tǒng)中跨應(yīng)用數(shù)據(jù)分享功能的實(shí)現(xiàn)
這篇文章主要介紹了Android系統(tǒng)中跨應(yīng)用數(shù)據(jù)分享功能的實(shí)現(xiàn),文中分為發(fā)送文字、二進(jìn)制內(nèi)容和圖片三種情況來(lái)講,需要的朋友可以參考下2016-04-04

