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]