android中的Timer与Handler的比较
Posted 张行之
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中的Timer与Handler的比较相关的知识,希望对你有一定的参考价值。
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);
以上是关于android中的Timer与Handler的比较的主要内容,如果未能解决你的问题,请参考以下文章
android 定时器(Handler Timer Thread AlarmManager CountDownTimer)