首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android里的平行宇宙

Android里的平行宇宙

作者头像
用户1907613
发布2018-07-20 16:13:10
2890
发布2018-07-20 16:13:10
举报
文章被收录于专栏:Android群英传Android群英传

愚蠢的人类,还以为这个世界上就他们一个地球。

连对象都可以有多个,地球居然只能有一个?呵呵哒,我们塞伯坦星球的人早就看穿了这一切,怕你们听不懂太高深的物理,所以我用你们计算机的内部架构来给你们解释解释。

真正的宇宙就和你们的CPU一样,是一片虚无的世界,我们塞伯坦星球的人,就是整个世界的管理者,在整个宇宙中,存在在无数多个不同的地球,你们把它称之为进程,每一个地球,都对应着一个进程,而我们塞伯坦人,需要照顾每一个进程,为他们带去爱的种子。可我们每一个时间段内只能照顾一个进程,所以,只能按照你们文明发展程度来作为优先级,优先级高的,先去照顾,优先级低的,后面照顾。当我们照顾一个进程的时候,其它进程就在等待着我们。

每当我们来到一个地球,总能看见非常多的国家,你们把这称之为线程,每一个国家都独立完成着运行,而所有的国家在一起,完成一个宏大的目标——我也不知道是什么。我们塞伯坦人去过很多地球,有的地球只有一个国家,就是一个线程,有的地球,有好多好多个国家,就是360垃圾线程,还有的地球很不错,有事的时候就创建一个国家,事搞完了,这个国家就合并了,就像线程完成了任务。所以说,一个进程,至少有一个线程,我们只能按照进程来进行时间片的分配,你如果叫我按照线程来分,累的猝死了你负责吗?我们到的每一个地球,基本上都和你们一样无知,都不知道还有其它地球的存在,当然也不能怪你们,毕竟你们计算机里面,一个进程也不知道其它进程的存在。

在上个时间片,我们塞伯坦人去了一个名叫Android的地球,哎呦我的天呐,上面全是绿色的机器人,天天靠吃苹果为生。他们建立了一个国家,叫主线程,又叫UI线程,几乎所有的Android机器人都在这里面,有要脸的机器人,比如Activity,还有不要脸的,例如Service,有时候他们遇到了一些比较棘手的事情,一时半会搞不定,那些管事的人就会把做这些事的人踢到另一个国家,他们称之为工作线程,意思就是不干完就不能回主线程的线程。例如下载、请求网络数据,解码等等操作,都会被踢到工作线程,工作线程可能还不止一个,忙的时候可能有很多很多,他们也蛮可怜的,毕竟不能拖累主线程的发展,只能自己默默的在后面,搞完之后,才敢发个消息给主线程,接收他们这些难民。

据说,有些比较原始的Android地球,一辈子就只有一个线程,也就是主线程,随着他们的发展,最多也就是多了几个工作线程。但是突然有一天,有个家伙说,世界这么大,我想去看看,结果一不小心,发现在他们的地球外面,居然还有其它地球,握了个大草,还不赶紧去交流交流。于是我们只能勉为其难帮他们交流了交流,但我们又不能帮他们搞一辈子,所以,塞伯坦人秉着大公无私的精神,帮他们制定了一套规则,这就是跨进程通信,他们建立了以AIDL、ContentProvider、Messenger、Socket等等方式的跨进程通信方式,说到底,也就是告诉对方,如何能够联系到自己。但是这种通信也是有限的,每个地球上的资源,是有限而且独享的,地球A对地球B说,给我100吨煤气耍耍啊,地球B说,给你妹。资源是没办法通过这套协议来共享的,你只能传递过去,让对方创建,而不能凭空转移,就像你们不同进程中的数据,只能存在于自己的进程中一样,所以,地球A可以对地球B说,我这有一个产品经理,地球B说,我的产品经理是你的两倍还多一个。

还据说,有些比较牛逼的Android地球,居然自己创造了一个新的地球,新的地球上有新的资源,而且,就算新的地球爆炸,也不会影响原来的地球,真牛逼啊,就跟你们单个应用创建多进程一样,可以申请到新的资源,而且崩溃也不会互相影响,你们真是会玩。但我们也曾经劝过他们,进程太多,就增加了管理的成本,而且数据的通讯,也变得非常麻烦,所以,不是为了一些特殊的企图,最好还是别这样。

不知道看完你们是懂了进程和线程的关系了,还是原来懂了,现在不懂了,哇哈哈哈哈。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 群英传 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档