在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);