android中的Timer与Handler的比较

来源:互联网 发布:淘宝售卖侵犯知识产权 编辑:程序博客网 时间:2024/05/22 05:22

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);
0 0
原创粉丝点击