android中的Timer与Handler的比较
2016-05-13 17:31
477 查看
Timer是一个定时器,需要结合TimerTask使用,是一个定时的机制,更倾向于定时的功能。handler是android中的消息机制,通过handler可以post执行任务,或send发送消息以及其他功能。
所以2者的相同点是:在什么时间去执行一个任务。不同点:出发点就不同吧,Timer就像是一个计时器,多久执行一个任务或间隔多久执行;handler更多的是一个通信的功能,大多数用于子线程发送消息更新UI。
下面就简单介绍:
分别用Timer和hadner执行一个延时任务,几乎没有差别
然而,Timer可以间隔多久执行一次任务,并且一直不断的执行,如:
直到timer.cancel()方法执行,或对象被回收了。
当然,handler除了可以执行任务外,还可以发送消息。
所以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 Service中开启Activity和Alertdialog
- android国际化(多语言)
- Google《Android性能优化》学习笔记
- Android开机自动启动应用
- 几种常见的Android自动化测试框架及其应用
- MQTT+ApolloServer实现Android的消息推送功能
- Android Dev Intro - SurfaceView Vs View
- android Bitmap,byte[],Drawable之间的转换
- Android中实现IPC的几种方式详细分析及比较
- android读取properties文件中的信息
- Android 在本应用中打开其它应用
- android:showAsAction menu在xml中设置 以及对actionbar 的设置点击
- [置顶] Android必知必会-获取View坐标和长宽的时机
- Android必知必会-获取View坐标和长宽的时机
- Android获取系统时间
- android 对象的序列号与反序列
- The JAR of this class file belongs to container 'Android Private Libraries' Android查看外部依赖jar的源码问题解
- android EditText中的inputType
- Android蓝牙开发入门
- Android中ListView的缓存机制