在activity內不能夠直接使用定時器,由於定時器開闢了新的線程,而activity是主線程,兩個線程進行通訊因此用到handler
Handler工具類在多線程中有兩方面的應用:android
一、發送消息,在不一樣的線程間發送消息,使用的方法爲sendXXX();。多線程
android.os.Handler對象經過下面的方法發送消息的:
sendEmptyMessage(int),發送一個空的消息;
sendMessage(Message),發送消息,消息中能夠攜帶參數;
sendMessageAtTime(Message, long),將來某一時間點發送消息;
sendMessageDelayed(Message, long),延時Nms發送消息。ide
二、計劃任務,在將來執行某任務,使用的方法爲postXXX();。工具
android.os.Handler對象經過下面的方法執行計劃任務:
post(Runnable),提交計劃任務立刻執行;
postAtTime(Runnable, long),提交計劃任務在將來的時間點執行;
postDelayed(Runnable, long),提交計劃任務延時Nms執行。post
首先要定義handler
final Handler handler = new Handler() {線程
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// handler處理消息
if (msg.what == 0) {
if(myService.flag==0.0){
//此處能夠對activity組件進行操做
}else{
//此處能夠對activity組件進行操做
}對象
}
}
};
定義定時器:
timer = new Timer();get
// 定義計劃任務,根據參數的不一樣能夠完成如下種類的工做:在固定時間執行某任務,在固定時間開始重複執行某任務,重複時間間隔可控,在延遲多久後執行某任務,在延遲多久後重復執行某任務,重複時間間隔可控
timer.schedule(new TimerTask() {
@Override
public void run() {it
Log.i("yao", Thread.currentThread().getName());定時器
// 定義一個消息傳過去
Message msg = new Message();
msg.what = 0;
handler.sendMessage(msg);
}
}, 1000, 1000);