Android實現(xiàn)定時任務功能
本文實例為大家分享了Android實現(xiàn)定時任務功能的具體代碼,供大家參考,具體內容如下
1、采用Handle與線程的sleep(long)方法
(1)、定義一個Handler類,用于處理接受到的Message。
Handler handler = new Handler() { ?
? ? public void handleMessage(Message msg) { ?
? ? ? ? // 要做的事情 ?
? ? ? ? super.handleMessage(msg); ?
? ? } ?
}; (2)、新建一個實現(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)、在需要啟動線程的地方加入下面語句:
new Thread(new MyThread()).start(); ?
2、采用Handler的postDelayed(Runnable, long)方法
(1)、定義一個Handler類
Handler handler=new Handler(); ?
?
Runnable runnable=new Runnable() { ?
? ? @Override ?
? ? public void run() { ?
? ? ? ? // TODO Auto-generated method stub ?
? ? ? ? //要做的事情 ?
? ? ? ? handler.postDelayed(this, 2000); ?
? ? } ?
}; (2)、啟動
handler.postDelayed(runnable, 2000);
3、用Handler與timer及TimerTask結合的方法
(1)、定義定時器、定時器任務及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)、初始化計時器任務
task = new TimerTask() { ?
? ? @Override ?
? ? public void run() { ?
? ? ? ? // TODO Auto-generated method stub ?
? ? ? ? Message message = new Message(); ?
? ? ? ? message.what = 1; ?
? ? ? ? handler.sendMessage(message); ?
? ? } ?
}; (3)、啟動和關閉定時器
timer.schedule(task, 2000, 3000); ?? timer.cancel();
4、采用AlarmManger實現(xiàn)長期精確的定時任務
(1)、服務類:
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", "打印時間: " + 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)、啟動定時任務:
Intent intent = new Intent(this,HorizonService.class); startService(intent);
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android實現(xiàn)圖像灰度化、線性灰度變化和二值化處理方法
這篇文章主要介紹了Android實現(xiàn)圖像灰度化、線性灰度變化和二值化處理方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
Android照片墻應用實現(xiàn) 再多的圖片也不怕崩潰
這篇文章主要為大家詳細介紹了Android照片墻應用實現(xiàn),再多的圖片也不怕崩潰,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
詳解Android系統(tǒng)中跨應用數據分享功能的實現(xiàn)
這篇文章主要介紹了Android系統(tǒng)中跨應用數據分享功能的實現(xiàn),文中分為發(fā)送文字、二進制內容和圖片三種情況來講,需要的朋友可以參考下2016-04-04

