六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 79|回复: 0

Android Handler(三)

[复制链接]

升级  6%

172

主题

172

主题

172

主题

进士

Rank: 4

积分
530
 楼主| 发表于 2013-1-30 04:12:53 | 显示全部楼层 |阅读模式
本帖最后由 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;

}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表