历史上的今天

今天是:2024年10月10日(星期四)

正在发生

2019年10月10日 | 安卓机疯狂加大内存,苹果却不以为然,为何?

发布者:二进制心灵 来源: 知乎日报关键字:苹果  iOS 手机看文章 扫描二维码
随时随地手机看文章

这实际上是一个技术问题,涉及到 iOS 与安卓两个操作系统的设计原理。

 

首先,安卓机上大内存,这是个中国特色,也就是说只有中国国内销售的安卓机才会上这么大的内存,海外版的安卓机主流内存基本和苹果差不了太多。图我就不贴了,大家可以自己去查一下,华为的 P30,海外版的 128G 硬盘的型号只配 4G 或 6G 内存,而中国版的 P30,64G 硬盘的型号却配上了 8G 内存;海外版的安卓机,128G 硬盘配 4G 内存比比皆是,简直不要太多,但在国内,你几乎找不到一款 128G 硬盘配 4G 内存的安卓机。这样乍一看好像我们得了便宜,可其实,这是国产安卓生态的无奈之举。

 

先说国内安卓机为什么上大内存吧。举一个例子,比如我们常用的微信这个 APP,首先你打开微信登录账号后,你手机上的微信 APP 就会和腾讯的服务器保持一个长久的连接,你发一条消息给你朋友,这条消息不是直接从你的手机上发到他的手机上的,而是你的手机将消息发给了腾讯的服务器,然后腾讯的服务器再发给你朋友。这个时候就有一个问题,如果你朋友手机上的微信 APP 处在关闭状态下,那么即使腾讯服务器把消息发过去了,他也收不到,因为他的手机上微信 APP 已经完全关闭了,已经和腾讯服务器断开连接了,只有当他再次打开微信的时候,连接恢复,他才能收到那条信息。也就是说,想要及时收到消息,那么微信这个 APP 就不能完全关闭,需要留下一些线程在后台一直保持运行,一直和腾讯的服务器保持接连,这样一旦收到消息,系统才能及时启动消息机制提醒你。

 

所以,国内安卓系统下,每一个 APP,都必须在后台(也就是内存里)留下一些线程随时准备接收外来信息,也就是说你刚打开手机还啥都没干,你手机上所有 APP 的一部分线程已经悄悄启动,进驻内存,而这些后台启动的线程是无法关闭的,因为是合法的,关闭的话用户就无法及时收到消息。另外,不要小看这些后台线程的数量,一个 APP 在后台里留十几二十 MB 确实不多,但 100 个 APP(64G 硬盘的手机就能装 100 个 APP)加起来就要吃掉将近 2G 的内存!

 

因此,国内安卓机的内存容量必须跟着硬盘容量递增,硬盘容量越大,能下的 APP 就越多,就越需要更大的内存来保证这些 APP 留在后台的线程正常运行。

 

再说 iOS,它为啥就不需要大内存呢?因为苹果有自己的服务器(谷歌实际上也有自己的服务器,但国内不能用,下面会说)。iOS 的这个系统,必须搭配苹果公司的服务器才能正常运行。每一台 iOS 设备在联网的时候,iOS 系统首先会和苹果的服务器建立一个长连接。

 

还是微信那个例子,在 iOS 上,如果微信处在打开状态下,那么逻辑还是和上述安卓的一样,差距是体现在关闭微信后。如果你 iPhone 上的微信 APP 关闭了,会和腾讯的服务器断开,而这个时候,你朋友发了一条消息给你,这条消息先发给了腾讯的服务器,这时腾讯服务器发现你手机上的微信 APP 没有和服务器建立连接,那么它会将这条消息转头发给苹果的服务器,然后苹果的服务器收到后会发送给你的 iOS 系统,系统收到就能及时做出提醒。这样实际上是多了一个步骤,但带来的好处是你手机上的微信 APP 可以完全关闭,不需要留下多余的线程来接收消息,因为苹果的服务器会一直保持接收消息,然后将消息发给手机系统,系统再做出提醒。

 

这样一来,苹果手机的内存就不需要跟着硬盘容量一起递增,因为即使 APP 完全关闭,也不影响及时接收消息。再加上 iOS 系统实际上不支持真正意义上的后台运行(仅持后台听歌、下载、导航等有限几个操作,如果一个 APP 进入后台,10 分钟内没被换到前台来,那么系统就会将它关闭,只留下临死前的一个截图,所谓的墓碑机制),所以苹果手机的这些内存绝大部分时间内其实只为一个 APP(当前这个)服务,一个 APP 使用 4G 内存,真的是绰绰有余,有余到多的不能再多了。

 

插个题外话,都说苹果手机安全,注重隐私,也有这个原因,苹果手机上的 APP,如果关闭了,那就是真的全部线程都关闭了;而安卓,由于每一个 APP 都必须在后台留一些线程一直运行,有的无良 APP 甚至手机厂商,就不仅仅会留下接收消息的线程,还会留下偷偷开启摄像头或者麦克风的线程,去收集用户数据,而这些后台的的线程,由于是系统代码层面的东西,用户根本没可能去关闭。

 

最后,说一下海外版安卓机为什么也不上这么大的内存,因为海外版安卓机可以使用谷歌的服务器(前段时间闹的沸沸扬扬的安卓停止对华为授权事件,实际上就是谷歌不让海外版华为连接谷歌的服务器了),而使用了谷歌的服务器,推送机制就变得和 iOS 一样了,就不需要有 APP 自己的线程留在后台了,谷歌的服务器会帮 APP 们接收信息。

 

而由于众所周知的原因,国内安卓用户是无法连接谷歌的服务器的,那么,APP 要想及时接收消息,开发者也只能使用常驻后台这个方法,而让 APP 线程常驻在后台,需要大量的内存支持,那国内的安卓机就只好加大内存。那么,谁来为这些多出来的内存买单呢?羊毛都出在羊身上,当然还是用户,还是消费者。这就是我们国内安卓用户的悲催之处,我们不仅要忍受隐私的泄露,还要为这样的行为买单。

 

目前,国内的 APP 驻留后台已经把国内的整个安卓生态搞的乌烟瘴气、乱七八糟。其实好多大厂想过解决方案,比如小米推出自己的推送服务,华为也有自己的推送服务,但全都收效甚微。因为没什么开发者去配合他们,一来因为开发者适配的话需要一个厂一个厂去适配,提升了开发成本和维护成本,二来 APP 开发商也不愿放弃常驻后台带来的利益。

 

目前比较值得期待的,是安卓推送联盟,这个联盟是由工信部牵头的,运行机制和 iOS 的推送原理差不多,如果能全面铺开,可以解决上述问题,但这一套现在还在测试阶段,还是个美好的愿望,日后能不能全面铺开还是前途未卜。

 

所以,苹果不上大内存,真不是厨子抠门,因为没必要了,国内安卓机 12G 内存都打不过苹果 4G 内存,为什么?因为 12G 内存里,很大一部分是留给国产 APP 常驻后台用的。

 

就是这样。

关键字:苹果  iOS 引用地址:安卓机疯狂加大内存,苹果却不以为然,为何?

上一篇:骁龙855 Plus+三重快充 小米9 Pro 5G再次开售
下一篇:7nm的力量,苹果A13芯片完胜所有竞争对手

推荐阅读

据国外媒体NBCnews报道,日常用品包裹上耶鲁大学研发的“机器人皮肤”后,可化身柔软的机器人,还能移动、抓握、甚至笨拙地走路。把一个毛绒绒的玩具变成机器人?耶鲁大学的研究人员正致力于这一课题。他们研究的机器人皮肤由配备了传感器和远程操作致动器的弹性板制成。通过数块皮肤的配合,研发者能够即兴创造出各种“机器人”。在最近的测试中,包裹上...
集微网消息,在自动驾驶研究的道路上,中国和美国是处于领先地位的。而国内首家自动驾驶研究代表为百度。百度是众多与自动驾驶技术关联紧密的互联网公司之一。李彦宏乘坐百度无人驾驶汽车上五环、吃罚单,百度Apollo无人车开上春晚……这些大多耳熟能详。实际上,百度在自动驾驶领域的研究、建树以及成果在国内甚至于是全球范围内都处于很高水平。早在16年...
10月9日,旷达科技发布公告称,公司全资子公司旷达新能源投资有限公司及其下属公司常州旷达富辰产业投资有限责任公司投资的合伙企业嘉兴嘉望投资合伙企业(有限合伙)(以下简称“嘉兴嘉望”)与NDK于2020年6月3日签订股份购买协议及合资协议,由嘉兴嘉望直接或者指定的关联公司分两个批次购买NDK新设立公司NDK SAW合计75%的股权。为顺利实施对NDK SAW的...
1989年,小霸王学习机的名号响彻大江南北,无数的孩子求着家长在家里购置一台用以“学习”,虽然很多家长心知肚明,这台所谓的学习机最后的用途就是玩一些FC游戏,但架不住软磨硬泡,最终还是咬咬牙拿出工资买下了小霸王。这台仿造日本任天堂FC的小霸王学习机,出自一间广东中山市的小厂,而这家厂的厂长,就是段永平。小霸王的崛起段永平毕业于浙江大学无...

史海拾趣

问答坊 | AI 解惑

如何读prolific usb转串口转过来的串口

也是用createfile读吗   和普通的com特性一样吗 …

查看全部问答∨

请教一下wince6.0 USB端口识别的问题。

目前采用telechips的8900,板子上有一个1.1的HOST和2.0的OTG,目前需要做一个需求,就是当u盘插入的时候,能够识别出插入的是1.1的端口还是2.0的,telechips大部分代码提供的是静态库, 目前有什么方法可以实现?把usb的控制器值打印了一部分出来, ...…

查看全部问答∨

关于微软的提供的WINCE SDK

  准备在PDA上开发一个简单的程序,不打算自己定制wince SDK,看见参考书上的有微软提供的Pocket PC 2003,打算用这个,但是上了微软的网站,没有找到,书是2006版,可能变化太快了,只找到了一个pda SDK 1.1,本人是新手,谁能解释一下, ...…

查看全部问答∨

Nios IDE 运行中的一个错误

IDE 中LED 跑马灯的程序运行时总是出现 nios2-terminal: connected to hardware target using JTAG UART on cable nios2-terminal: "USB-Blaster [USB-0]", device 1, instance 0 nios2-terminal: (Use the IDE stop button or Ctrl-C to te ...…

查看全部问答∨

vxworks下串口操作

本人菜鸟,刚接触vxworks,在vxworks下进行2路串口通信 使用tty0,tty1等方式open 并调用read函数读取串口数据 现在不知道何时串口收到数据,所以调用read函数一直停在那,请问如何读取串口数据可以避免死循环?(由于限制,不考虑单独起任务读 ...…

查看全部问答∨

stm32f103的SPI通讯问题

拜问下 大虾们 SPI1 和 SPI2 都设定为双线双工 , SPI1 主 SPI2 从   在 通讯的时候 SPI1 向 SPI2 发送数据 SPI2 能接收 但是&nbs ...…

查看全部问答∨

STM8S103的读保护让我疯了

给客户做了6个样板,用STVP烧录了软件,选择了READONLY保护选项。 前几天客户把6个板子送过来要修改。结果发现有4块板子是正常,但是有2块板子的读保护没有了,代码通过STVP轻松读出来了。 真晕啦。这样的问题竟让让我遇到…

查看全部问答∨

仿真28335需要什么仿真器

听说能支持28335仿真的仿真器很少,想咨询下这方面的。 准备过一段时间购买一套。…

查看全部问答∨

这是最后一篇了,五精华无悬念:STM32的IAP方案

replyreload += \',\' + 1110631;STM32的IAP方案          几乎所有的同类书籍都介绍综合性的应用示例如“万年历 + 温度显示 + 闹钟响铃 + 计时表”这样的一个实时时钟范例或“STM32 + 音频解码 + 大容 ...…

查看全部问答∨

LED应用-1 线控制 & AN033

本帖最后由 dontium 于 2015-1-23 13:13 编辑 LED应用手册   1 线控制 – 省去 LED 驱动器的微处理器控制 AN033 -- 将射频闪光 LED 软件示例转换为 CC2420 - MSP430(修订版 A)   超实用的,快来看啊~~~ …

查看全部问答∨
小广播
最新手机便携文章

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved