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---Timer和Handler

Android中定时执行任务的3种实现方法

android 定时器(Handler Timer Thread AlarmManager CountDownTimer)

Android之定时器

Android高手进阶教程之----Android Handler的使用!!!

[Android] Android 定时任务实现的三种方法(以SeekBar的进度自动实现为例)