timer+thread 入门,简单封装

来源:互联网 发布:淘宝私人定制怎么设置 编辑:程序博客网 时间:2024/05/29 04:57

我们平时经常会用到timer,不过将timer放在主线程会加重主线程的负担

所以我们更倾向于使用多线程实现timer,每隔一段时间再通知主线程更新ui


大致思路:

  1. 使用thread,run,handler,msg实现多线程
  2. 使用timer,timerTask实现定时器功能
我们先来实现主线程中,更新ui的功能

新建一个handler,收到指定任务的code时,就执行我们定义的步骤
handler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);if (msg.what == task_code) {//timer action}}};
我们现在另外开一个线程类,我们可以想到,他需要几个参数,handler+delay的长度(毫秒)+时间间隔(毫秒)+任务code,为了安全起见,我把context也加上了

public TimerThread(Context context, Handler handler, int delay,int interval, int task_code) {// TODO Auto-generated constructor stubthis.handler = handler;mContext = context;this.delay = delay;this.interval = interval;this.task_code = task_code;}@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {// TODO Auto-generated method stubMessage msg = new Message();msg.what = task_code;handler.sendMessage(msg);}}, delay, interval);// schedule(timerTask,delay duration,timer task duration)}
是长这个样子的
要调用timertask的时候,就
TimerThread timerThread = new TimerThread(this, handler,1000,1000,task_code);timerThread.start();
想停止timer,就
timerThread.timer.cancel();
好了


代码在这里:→http://download.csdn.net/detail/edwardwayne/8647501

0 0
原创粉丝点击