wen742538485 发表于 2013-1-30 04:12:53

Android Handler(三)

本帖最后由 4546 于 2011-8-10 10:28 编辑


java代码:
// 存放数据

date.putInt("time", total);

msg.setData(date);

msg.what=0;

myHandler.sendMessage(msg);



//另一种写法

// Message msg=myHandler.obtainMessage();

// Bundle date = new Bundle();

// 存放数据

// date.putInt("time", total);

// msg.setData(date);

// msg.what=0;

// msg.sendToTarget();

}



@Override

public void TaskRun() {

updateTimerValues();

}
复制代码
       实现Button按钮的事件处理以此进入倒计时操作。这里使用的Timer 来执行定时操作(其实我们完全可以另起一个线程)。Task类继承了TimerTask类,里面增加了一个任务处理接口来实现回调模式,应此 Activity需要实现该回调的接口 ITaskCallBack(这样做是因为我比较不喜欢内部类的编写方法)。

    ICallBack接口和Task类

java代码:
public interface ITaskCallBack {

void TaskRun();

}



public class Task extends TimerTask {

private ITaskCallBack iTask;

public Task(ITaskCallBack iTaskCallBack) {

super();

iTask=iTaskCallBack;

}



public void setCallBack(ITaskCallBack iTaskCallBack) {

iTask=iTaskCallBack;

}



@Override

public void run() {

// TODO Auto-generated method stub

iTask.TaskRun();

}



}
复制代码
     这是Java的回调函数的一般写法。  实现CallBack

java代码:
/** * 实现消息处理 */



@Override

public boolean handleMessage(Message msg) {

switch(msg.what)

{



case 0:

Bundle date=msg.getData();

txt.setText(String.valueOf(date.getInt("time")));

Log.d("ThreadId", "HandlerMessage:"+ String.valueOf(Thread.currentThread().getId()));

Log.d("ThreadId", "msgDate:" + String.valueOf(date.getInt("time")));

break;

}



return false;

}
页: [1]
查看完整版本: Android Handler(三)