如何让主线程等待子线程获得网络数据后再继续运行?

RainMi_ 2015-10-05 04:46:16
我想要从网络中获取数据,然后在ui中显示获得的数据,但是请求网络数据必须要在子线程中进行,而主线程貌似是不能暂停运行的,那么如何让主线程等待子线程获得网络数据后再继续运行?
...全文
703 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcmakebest 2015-10-06
  • 打赏
  • 举报
回复
楼主让主线程等待,明显是在开历史的倒车啊.要知道会显示强制关闭的按钮的啊,难道这是可以接受的么 其实只要把主线程的相关功能按钮禁止就可以了,耐心等待强大的 Handler 收到消息, 但也要考虑万一没有消息来, 主线程可以优雅地退出.
阿飞__ 2015-10-06
  • 打赏
  • 举报
回复
弄个接口回调撒,子线程执行完后就执行接口回调的方法
qq_31772099 2015-10-06
  • 打赏
  • 举报
回复
可以在主线程调用异步任务,新建类继承AsyncTask,在doInBackground(在子线程执行)方法下完成网络数据加载的工作,然后 doInBackground可以把获得的数据传给onPostExecute(在主线程执行)方法。在这里你就可以把数据回传给主线程了
leobert_lan 2015-10-06
  • 打赏
  • 举报
回复
如果说自己写这个模块的话,反问下版主为什么要让主线程等待,为什么要让主线程等待,为什么要让主线程等待。 1正是为了避免anr,才开子线程。 2让主线程一直显示一个progressbar之类的东西不能算严格的anr,哪怕它真的不鸟你。 版主想说的等待,我看应该是显示给用户一个提示进度的组件,并且在子线程处理结束后得到反馈,继而处理后续逻辑。显然,要使用message。
zhtoad 2015-10-06
  • 打赏
  • 举报
回复
我就记得 AsyncTask 可以实现这个功能
xiaohuanqi 2015-10-05
  • 打赏
  • 举报
回复
首先主线程是不可以等待的,不然就报ANR异常了,其次,子线程获取数据完毕直接发一个消息,使用Handler消息机制,告诉Handler去处理这个消息就达到你说的目的了,Hanlder就是在主线程中执行
microhex 2015-10-05
  • 打赏
  • 举报
回复
哥,主线程是不能等待的啊。。。
星灭 2015-10-05
  • 打赏
  • 举报
回复
不是那个,虽然不知道你怎么请求的,但很多框架都有封装好的网络请求方法,会有一个获取数据成功之后执行的方法,也能在这个方法里面修改主ui
RainMi_ 2015-10-05
  • 打赏
  • 举报
回复
引用 1 楼 u013691865 的回复:
子线程获得数据不是有成功的回调方法吗?
你是说handler吗,handler也只会在sendMessage的时候被调用吧,没sendMessage之前,主线程和子线程依旧同时运行互不干扰啊
星灭 2015-10-05
  • 打赏
  • 举报
回复
子线程获得数据不是有成功的回调方法吗?

80,469

社区成员

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

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