怎么让主线程等待子线程获得网络数据后再继续运行
如何让主线程等待子线程获得网络数据后再继续运行?
我想要从网络中获取数据,然后在ui中显示获得的数据,但是请求网络数据必须要在子线程中进行,而主线程貌似是不能暂停运行的,那么如何让主线程等待子线程获得网络数据后再继续运行?
------解决思路----------------------
子线程获得数据不是有成功的回调方法吗?
------解决思路----------------------
首先主线程是不可以等待的,不然就报ANR异常了,其次,子线程获取数据完毕直接发一个消息,使用Handler消息机制,告诉Handler去处理这个消息就达到你说的目的了,Hanlder就是在主线程中执行
------解决思路----------------------
如果说自己写这个模块的话,反问下版主为什么要让主线程等待,为什么要让主线程等待,为什么要让主线程等待。
1正是为了避免anr,才开子线程。
2让主线程一直显示一个progressbar之类的东西不能算严格的anr,哪怕它真的不鸟你。
版主想说的等待,我看应该是显示给用户一个提示进度的组件,并且在子线程处理结束后得到反馈,继而处理后续逻辑。显然,要使用message。
------解决思路----------------------
楼主让主线程等待,明显是在开历史的倒车啊.要知道会显示强制关闭的按钮的啊,难道这是可以接受的么
其实只要把主线程的相关功能按钮禁止就可以了,耐心等待强大的 Handler 收到消息, 但也要考虑万一没有消息来, 主线程可以优雅地退出.
我想要从网络中获取数据,然后在ui中显示获得的数据,但是请求网络数据必须要在子线程中进行,而主线程貌似是不能暂停运行的,那么如何让主线程等待子线程获得网络数据后再继续运行?
------解决思路----------------------
子线程获得数据不是有成功的回调方法吗?
------解决思路----------------------
首先主线程是不可以等待的,不然就报ANR异常了,其次,子线程获取数据完毕直接发一个消息,使用Handler消息机制,告诉Handler去处理这个消息就达到你说的目的了,Hanlder就是在主线程中执行
------解决思路----------------------
如果说自己写这个模块的话,反问下版主为什么要让主线程等待,为什么要让主线程等待,为什么要让主线程等待。
1正是为了避免anr,才开子线程。
2让主线程一直显示一个progressbar之类的东西不能算严格的anr,哪怕它真的不鸟你。
版主想说的等待,我看应该是显示给用户一个提示进度的组件,并且在子线程处理结束后得到反馈,继而处理后续逻辑。显然,要使用message。
------解决思路----------------------
楼主让主线程等待,明显是在开历史的倒车啊.要知道会显示强制关闭的按钮的啊,难道这是可以接受的么
其实只要把主线程的相关功能按钮禁止就可以了,耐心等待强大的 Handler 收到消息, 但也要考虑万一没有消息来, 主线程可以优雅地退出.