android handler和callback的区别,调用接口后用handler还是callback

山城忙碌人 2016-05-18 09:46:44
当调用服务器接口后,大家是用handler,还是自定义的callback将结果返回给activity或者service?
一 如果以callback方式
public interface NetworkCallBack {
//bean中封装了参数,url,以及返回结果等
void networkCallBack(Bean bean);
}

public class HttpThread implements Runnable {
public HttpThread (NetworkCallBack callback){
this.callback=callback;
}

public void doWork(){
//网络调用代码省略
callback.networkCallBack(bean);
}
private NetworkCallBack callback;
}

public class TestAct extends Activity implements OnClickListener ,NetworkCallBack{
//处理回调
@Override
public void networkCallBack(Bean bean) {
if(bean!=null){
Log.i("info", "url "+bean.getUrl()+","+bean.getCode()+","+bean.getResult());
}
}
}


二:如果以handler方式
public class HttpThread implements Runnable {
public HttpThread (Handler handler){
this.handler=handler;
}

public void doWork(){
//网络调用代码省略
Message msg =handler.obtainMessage(1);
Bundle bundle= new Bundle();
bundle.putSerializable("result", bean);//bean 和 callback是同一个对像,也是封装参数等的对像
msg.setData(bundle);
handler.sendMessage(msg);
}
private Handler handler;
}

public class TestAct extends Activity implements OnClickListener ,NetworkCallBack{
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
};
};
}


如果就处理调用服务器接口,这两个方式都能实现,请问他们区别是什么?
...全文
936 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
山城忙碌人 2016-05-18
  • 打赏
  • 举报
回复
引用 1 楼 u010668114 的回复:
你模拟代码会感觉两者是没区别的(输出一下时间你会发现Handler慢一些),但是实际开发中,联网操作是放到线程中去做的,但是在Android中更新UI大部分需要在主线程中去做,Handler的回调是会抛到主线程运行的,而你自己的CallBack依旧是在那个线程中。
清楚了一些,谢谢!
只为搞笑 2016-05-18
  • 打赏
  • 举报
回复
你模拟代码会感觉两者是没区别的(输出一下时间你会发现Handler慢一些),但是实际开发中,联网操作是放到线程中去做的,但是在Android中更新UI大部分需要在主线程中去做,Handler的回调是会抛到主线程运行的,而你自己的CallBack依旧是在那个线程中。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧