您的位置:首页 > 移动开发 > Android开发

android中的Timer与Handler的比较

2016-05-13 17:31 477 查看
Timer是一个定时器,需要结合TimerTask使用,是一个定时的机制,更倾向于定时的功能。handler是android中的消息机制,通过handler可以post执行任务,或send发送消息以及其他功能。

所以2者的相同点是:在什么时间去执行一个任务。不同点:出发点就不同吧,Timer就像是一个计时器,多久执行一个任务或间隔多久执行;handler更多的是一个通信的功能,大多数用于子线程发送消息更新UI。

下面就简单介绍:

分别用Timer和hadner执行一个延时任务,几乎没有差别

public class MainActivity extends AppCompatActivity {

private Button btn;
private Timer timer = new Timer();
private Task task = new Task();
private class Task extends TimerTask {
@Override
public void run() {
request();
}
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
request();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

if (timer != null) {
//timer执行任务
timer.schedule(task,5000);
}
//handler执行任务
handler.postDelayed(task,5000);
}
});
}

public void request() {
Log.e("zhang", "----------------------------");
}

@Override
protected void onDestroy() {
super.onDestroy();
timer.cancel();//取消任务
handler.removeCallbacks(task);//取消任务
// handler.removeCallbacksAndMessages(null);//即取消任务,且清除消息
}
}


然而,Timer可以间隔多久执行一次任务,并且一直不断的执行,如:

timer.schedule(task,5000,5000);


直到timer.cancel()方法执行,或对象被回收了。

当然,handler除了可以执行任务外,还可以发送消息。

handler.sendEmptyMessageDelayed(1,5000);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: