Handler向主线程发送消息

King_X_ 2017-08-19 11:44:29
Android studio连接网络时,新开的子线程需要读取网络图片信息,并将InputStream发送给主线程,查了下资料都是用sendMessage(); (我用时 用红线标注了,报错)为什么吗,难道弃用了吗?求大神解释。可以的话 希望慷慨贴点Handler发送和接受的代码 谢谢
...全文
308 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
afunx 2017-08-21
  • 打赏
  • 举报
回复
引用 2 楼 King_X_ 的回复:
您好,您看下 如下代码应怎样修改呢 Bitmap bitmap = BitmapFactory.decodeStream(httpUrl.getInputStream()); Message message = new Message(); message.obj = bitmap; m_handler.sendMessage(message);
引用 1 楼 afunx 的回复:
Message有一个方法setData(Bundle data),Inputstream不能直接放在Message中,在非主线程取到String再传给主线程不就可以了吗?为啥要InputStream放主线程?
public final class Bitmap implements Parcelable public final class Message implements Parcelable { public void setData(Bundle data); } public final class Bundle extends BaseBundle implements Cloneable, Parcelable { public void putParcelable(@Nullable String key, @Nullable Parcelable value); } 也就是说,Message可以setData,Bundle可以putParcelable,而Bitmap就是一个Parcelable。 Bitmap bitmap = BitmapFactory.decodeStream(httpUrl.getInputStream()); Message message = Message.obtain(); Bundle bundle = new Bundle(); bundle.putParcelable("bitmapXXX", bitmap); message.setData(bundle); m_handler.sendMessage(message);
儿大不由爷 2017-08-21
  • 打赏
  • 举报
回复
传递那个对象肯定是不行的,对象对应的类要实现可序列化接口
King_X_ 2017-08-20
  • 打赏
  • 举报
回复
您好,您看下 如下代码应怎样修改呢 Bitmap bitmap = BitmapFactory.decodeStream(httpUrl.getInputStream()); Message message = new Message(); message.obj = bitmap; m_handler.sendMessage(message);
引用 1 楼 afunx 的回复:
Message有一个方法setData(Bundle data),Inputstream不能直接放在Message中,在非主线程取到String再传给主线程不就可以了吗?为啥要InputStream放主线程?
afunx 2017-08-20
  • 打赏
  • 举报
回复
Message有一个方法setData(Bundle data),Inputstream不能直接放在Message中,在非主线程取到String再传给主线程不就可以了吗?为啥要InputStream放主线程?

80,350

社区成员

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

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