Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.91 KB | None | 0 0
  1. Android 现在上到 12GB 内存(RAM)了,是 iPhone 6s 的 6 倍,苹果如果上 8GB 那不是一点都不会卡?还是这样慢慢升级让大家买新的?防止用户万年不换机?
  2.  
  3. iPhone 提升内存是否会进一步提升其易用性?如果会,那么 iPhone 为什么不加大内存?苹果这样的公司还能走多远?
  4.  
  5. 作者:余以为
  6.  
  7. 这实际上是一个技术问题,涉及到 iOS 与安卓两个操作系统的设计原理。
  8.  
  9. 首先,安卓机上大内存,这是个中国特色,也就是说只有中国国内销售的安卓机才会上这么大的内存,海外版的安卓机主流内存基本和苹果差不了太多。
  10.  
  11. 图我就不贴了,大家可以自己去查一下,华为的 P30,海外版的 128G 硬盘的型号只配 4G 或 6G 内存,而中国版的 P30,64G 硬盘的型号却配上了 8G 内存;
  12.  
  13. 海外版的安卓机,128G 硬盘配 4G 内存比比皆是,简直不要太多,但在国内,你几乎找不到一款 128G 硬盘配 4G 内存的安卓机。
  14.  
  15. 这样乍一看好像我们得了便宜,可其实,这是国产安卓生态的无奈之举。
  16.  
  17. 先说国内安卓机为什么上大内存吧。
  18.  
  19. 举一个例子,比如我们常用的微信这个 APP,首先你打开微信登录账号后,你手机上的微信 APP 就会和腾讯的服务器保持一个长久的连接,你发一条消息给你朋友,这条消息不是直接从你的手机上发到他的手机上的,而是你的手机将消息发给了腾讯的服务器,然后腾讯的服务器再发给你朋友。
  20.  
  21. 这个时候就有一个问题,如果你朋友手机上的微信 APP 处在关闭状态下,那么即使腾讯服务器把消息发过去了,他也收不到,因为他的手机上微信 APP 已经完全关闭了,已经和腾讯服务器断开连接了,只有当他再次打开微信的时候,连接恢复,他才能收到那条信息。
  22.  
  23. 也就是说,想要及时收到消息,那么微信这个 APP 就不能完全关闭,需要留下一些线程在后台一直保持运行,一直和腾讯的服务器保持接连,这样一旦收到消息,系统才能及时启动消息机制提醒你。
  24.  
  25. 所以,国内安卓系统下,每一个 APP,都必须在后台(也就是内存里)留下一些线程随时准备接收外来信息,也就是说你刚打开手机还啥都没干,你手机上所有 APP 的一部分线程已经悄悄启动,进驻内存,而这些后台启动的线程是无法关闭的,因为是合法的,关闭的话用户就无法及时收到消息。
  26.  
  27. 另外,不要小看这些后台线程的数量,一个 APP 在后台里留十几二十 MB 确实不多,但 100 个 APP(64G 硬盘的手机就能装 100 个 APP)加起来就要吃掉将近 2G 的内存!
  28.  
  29. 因此,国内安卓机的内存容量必须跟着硬盘容量递增,硬盘容量越大,能下的 APP 就越多,就越需要更大的内存来保证这些 APP 留在后台的线程正常运行。
  30.  
  31. 再说 iOS,它为啥就不需要大内存呢?因为苹果有自己的服务器(谷歌实际上也有自己的服务器,但国内不用,下面会说)。iOS 的这个系统,必须搭配苹果公司的服务器才能正常运行。每一台 iOS 设备在联网的时候,iOS 系统首先会和苹果的服务器建立一个长连接。
  32.  
  33. 还是微信那个例子,在 iOS 上,如果微信处在打开状态下,那么逻辑还是和上述安卓的一样,差距是体现在关闭微信后。
  34.  
  35. 如果你 iPhone 上的微信 APP 关闭了,会和腾讯的服务器断开,而这个时候,你朋友发了一条消息给你,这条消息先发给了腾讯的服务器,这时腾讯服务器发现你手机上的微信 APP 没有和服务器建立连接,那么它会将这条消息转头发给苹果的服务器,然后苹果的服务器收到后会发送给你的 iOS 系统,系统收到就能及时做出提醒。
  36.  
  37. 这样实际上是多了一个步骤,但带来的好处是你手机上的微信 APP 可以完全关闭,不需要留下多余的线程来接收消息,因为苹果的服务器会一直保持接收消息,然后将消息发给手机系统,系统再做出提醒。
  38.  
  39. 这样一来,苹果手机的内存就不需要跟着硬盘容量一起递增,因为即使 APP 完全关闭,也不影响及时接收消息。
  40.  
  41. 再加上 iOS 系统实际上不支持真正意义上的后台运行(仅持后台听歌、下载、导航等有限几个操作,如果一个 APP 进入后台,10 分钟内没被换到前台来,那么系统就会将它关闭,只留下临死前的一个截图,所谓的墓碑机制)。
  42.  
  43. 所以苹果手机的这些内存绝大部分时间内其实只为一个 APP(当前这个)服务,一个 APP 使用 4G 内存,真的是绰绰有余,有余到多的不能再多了。
  44.  
  45. 插个题外话,都说苹果手机安全,注重隐私,也有这个原因,苹果手机上的 APP,如果关闭了,那就是真的全部线程都关闭了;
  46.  
  47. 而安卓,由于每一个 APP 都必须在后台留一些线程一直运行,有的无良 APP 甚至手机厂商,就不仅仅会留下接收消息的线程,还会留下偷偷开启摄像头或者麦克风的线程,去收集用户数据,而这些后台的的线程,由于是系统代码层面的东西,用户根本没可能去关闭。
  48.  
  49. 最后,说一下海外版安卓机为什么也不上这么大的内存。
  50.  
  51. 因为海外版安卓机可以使用谷歌的服务器(前段时间闹的沸沸扬扬的安卓停止对华为授权事件,实际上就是谷歌不让海外版华为连接谷歌的服务器了),而使用了谷歌的服务器,推送机制就变得和 iOS 一样了,就不需要有 APP 自己的线程留在后台了,谷歌的服务器会帮 APP 们接收信息。
  52.  
  53. 而国内安卓用户不是连接谷歌的服务器的,那么,APP 要想及时接收消息,开发者也只能使用常驻后台这个方法,而让 APP 线程常驻在后台,需要大量的内存支持,那国内的安卓机就只好加大内存。
  54.  
  55. 目前,国内的 APP 驻留后台已经把国内的整个安卓生态搞的乌烟瘴气、乱七八糟。其实好多大厂想过解决方案,比如小米推出自己的推送服务,华为也有自己的推送服务,但全都收效甚微。
  56.  
  57. 因为没什么开发者去配合他们,一来因为开发者适配的话需要一个厂一个厂去适配,提升了开发成本和维护成本,二来 APP 开发商也不愿放弃常驻后台带来的利益。
  58.  
  59. 目前比较值得期待的,是安卓推送联盟,这个联盟是由工信部牵头的,运行机制和 iOS 的推送原理差不多,如果能全面铺开,可以解决上述问题,但这一套现在还在测试阶段。
  60.  
  61. 所以,苹果不上大内存,真不是厨子抠门,因为没必要了,国内安卓机 12G 内存都打不过苹果 4G 内存,为什么?因为 12G 内存里,很大一部分是留给国产 APP 常驻后台用的。
  62.  
  63. 就是这样。
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement