请问关于handle 的问题

woshini1982 2016-09-07 02:02:44
请问 ,以下代码中 有 Handler.Callback() ,这里的这个callback起到什么作用呢?在什么情况下就写 new Handler.Callback() 呢?

另外 return false; 和 return ture 表示什么意思呢?

麻烦知道的朋友帮忙详细回复以下的代码是怎么使用的,谢谢啦


Handler mHandler = new Handler(new Handler.Callback()
{

@Override
public boolean handleMessage(Message msg) {
// TODO something

return false;

}
});
...全文
187 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveWyf_ 2016-09-07
  • 打赏
  • 举报
回复
没什么区别,实现Callback可以单独写出来复用,这个和创建Thread差不多的意思。创建handle以后,就会加入的消息队列,最后就会在handlerMessage中被调用
ink_s 2016-09-07
  • 打赏
  • 举报
回复
LoveWyf_ 2016-09-07
  • 打赏
  • 举报
回复
引用 4 楼 woshini1982 的回复:
[quote=引用 2 楼 qq_25412055 的回复:] 没什么区别,实现Callback可以单独写出来复用,这个和创建Thread差不多的意思。创建handle以后,就会加入的消息队列,最后就会在handlerMessage中被调用
@qq_25412055 谢谢您的回复 您所说的 “实现Callback可以单独写出来复用”, 这个代码具体是怎么写的呢? 麻烦再帮忙回复下,谢谢啦[/quote] 就比如OnClickListener,实现的时候你可以button.setOnClickListener(new OnClickListener(xxxxx)) 这样子写,但是你可以下一个MyOnClickListener extends OnClickListener{xxx},然后button.setOnClickListener(MyOnClickListener .this) 而这个MyOnClickListener 可以复用,被多个btn所set 就是类似这个意思
海里的顽石 2016-09-07
  • 打赏
  • 举报
回复
Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { System.out.println("内层:"+msg.what); return true; } }){ @Override public void handleMessage(Message msg) { System.out.println("外层:"+msg.what); } }; 上面的代码中,如果内层返回为true,则不会执行外层的handleMessage方法,如果内层返回为false则会继续执行外层的handleMessage方法
woshini1982 2016-09-07
  • 打赏
  • 举报
回复
引用 2 楼 qq_25412055 的回复:
没什么区别,实现Callback可以单独写出来复用,这个和创建Thread差不多的意思。创建handle以后,就会加入的消息队列,最后就会在handlerMessage中被调用
@qq_25412055 谢谢您的回复 您所说的 “实现Callback可以单独写出来复用”, 这个代码具体是怎么写的呢? 麻烦再帮忙回复下,谢谢啦
woshini1982 2016-09-07
  • 打赏
  • 举报
回复
引用 1 楼 ink_s 的回复:
Handler handler = new Handler() { @Override public void handleMessage(Message msg) { } }; 和 Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { return false; } }); 这两个是一样的 第一种在一些情况下会内存泄漏 return false; 表示不拦截此消息 true表示拦截 private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (Integer.valueOf((int) msg.obj) % 2 == 0) { sendHanderMessage(); return true; } return false; } }) { @Override public void handleMessage(Message msg) { super.handleMessage(msg); textView.setText(String.valueOf(msg.obj)); sendHanderMessage(); } }; return false不会拦截此消息,会执行Handler的void handleMessage,return true,就会拦截此消息,不会执行handler的void handleMessage方法
@ ink_s 谢谢您的回复

80,351

社区成员

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

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