android中的Timer与Handler的比较

本文对比了Android中的Timer和Handler机制,介绍了它们如何实现任务的定时执行。Timer适用于定期执行任务,而Handler则常用于线程间通信及更新UI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值