为了账号安全,请及时绑定邮箱和手机立即绑定

Android网络入门必备基础篇

标签:
Android

以下来自于两位好几年Android经验对NetworkOnMainThread的疑惑不解,苦查无果,某认为问题出在回调上的人员,询问起本楼主时,本楼主非常无奈,信笔直书所回赠的基础性解答。现公开发表。

"感觉你们对我之前说的"主线程调网络"不是很理解,现解释澄清下。调不是指的回调,很明显是请求。一句话解释就是"网络请求没有异步"。请求响应机制中,以主线程为参考系,很明显请求必须是要异步执行的,而响应的执行同步或异步均可,响应的二次处理异步执行更好,响应的最终回调同步执行更好。但凡NetworkOnMainThread,与响应都不可能有关系。对于请求要 异步执行,并不是说请求一定要异步去请求,而是说请求一定要异步执行,同步请求异步执行就是搭建网络层的一个很好的方式。具体说来,请求的方式在大的架构上只有外异内同,外同 内异,外异内异三种方式。如果以"外同内同"的方式去请求的话,3.0以上手机就会报NetworkOnMainThread例外,这就是报错的本质原因。一般app所使用的要么是外同内异方式,要么是外 异内同方式。外同内异比外异内同更容易阻塞,外异内同比外同内异有更多的内存消耗。在搭建两级中转站实现不同层级宏观调控的架构中,很明显,外异内同要比外同内异要好。另需注 意,线程是一个参考系,使用不同的参考系,结论的本质是不会变的,只是说法就变了。以数学科学的方式来看,科学的参考系是依附线程,其为动态;主线程是易观察的静态参考系。如 异步回调与同步执行并不矛盾,只是参考系不一样。"

以上论述献给Android网络模块的入门开发人员,与好几年Android经验仍对网络一知半解的开发人员作为参考。

另作注:以上论述非Android特有机制,与所有开发语言皆是共通的,但大同下仍有小异。

原文链接:http://www.apkbus.com/blog-784139-68487.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消