对比安卓16GB存储和苹果4G存储的流畅度,理论上安卓肯定比苹果快,但是为什么很多人感觉流畅度不如苹果?
其实跟体制有关系。
Android对内存的控制不够绝对。
Android系统存储的使用取决于每个应用程序进程的应用。为了规范应用,Android对流程制定了一套管理规则。
Android系统根据进程的类型来管理进程。
进程的类型按重要性降序排列为:前台进程、可见进程、服务进程、后台进程、空进程。
1.前台进程
顾名思义,前台进程就是当前显示在屏幕上并与用户交互的进程。系统前端流程很少,这个流程对用户体验影响最大。只有当系统的内存不足以维持与用户的基本交互时,前台进程才会被破坏。因此,这个过程是最重要的。
2.可见过程
可视流程也有可视化界面,但是不能和用户交互。通常可见进程在前台进程的后面,用户退出前台进程后会显示可见进程。
可以看出,进程一般调用生命周期方法OnPause(),说明进程没有前台进程重要,但对交互的影响还是很大的,因为用户可能随时切换,所以系统不会轻易破坏。
3.服务过程
服务进程是一个调用startService的服务,startService是UNIX中的守护进程。对用户来说是不可见的,但是保证了一些重要的事件在一定的状态下被监控或维护,比如网络数据传输、背景音乐播放、资源后台下载等等。
这种进程在系统内存不足时被破坏,为了保证前台进程的顺利交互。
4.后台进程
这里的后台进程可能和一般意义上的后台进程混淆了。需要注意的是,android中的后台进程调用OnStop(),可以理解为隐形进程,即用户暂时没有与这个进程进行交互,所以这里的后台进程有点“待销毁”。
5.空进程。
这是一个系统缓存机制,实际上是一个进程外壳。当创建一个新的进程时,这个空进程可以加速进程的创建。当系统内存不足时,会先销毁空进程。
基本上基于这套规则,你就可以申请内存了,理论上是最靠谱的。想申请多少就申请多少,按规则使用。
但是在中国,它变了,首先是推送服务。
国外可以用Google push服务,国内因为某些原因不能用Google服务,于是各手机厂商和软件开始各显神通。
首先是手机厂商,比如小米做的小米push,华为做的华为push。这些都可以用,但是大部分开发者不会用,因为只能用在小米或者华为手机上。
所以软件开发者更喜欢使用第三方推送服务或者自己实现推送服务,这样就不用做适配工作,而且安全可控。
这就是问题所在。如果你自己实现推送服务,你必须保证你的APP跟你“活”在一起,于是一系列的保活方案就出来了,比如后台播放静音音乐,保留一个像素页面等等。这些操作的背后,是需要内存的。基本上所有app都会做至少一个保活方案,内存消耗几何。
工信部推动的统一推送联盟就是为了解决这种浪费资源,阻碍行业发展的现象。但目前统一推送联盟还没有正式在市场上使用,敬请期待!
IOS系统对内存有绝对的权利。
我觉得这就是IOS和Android的区别,这是闭源的一个好处。
IOS不允许APP有退出功能。所有app的退出由系统决定。基本上APP只要退出后台超过10分钟就会被销毁,但是会留下一个你的当前页面,就是你双击Home键弹出时看到的APP截图。这就是所谓的“墓碑机制”。
所以即使苹果内存小,也不会卡死。理论上,IOS系统永远只运行一个APP,除了系统应用和哪些APP(音乐APP,导航APP等。)必须在后台运行。
此外,IOS还有另一套系统推送服务。不是所有的app都要自己推。app后台发出推送后,IOS系统收到后会唤醒相应的APP来处理推送。
综上所述,安卓系统国内推送服务不够统一,导致所有app都实行keep-alive方案,消耗大量内存,造成卡顿情况。另一方面,由于国内软件开发者开发不规范,无节制的申请内存,导致运行app时出现卡顿的情况。
但由于苹果系统是闭源的,对内存有绝对的控制权,实现了一个系统同时只运行一个APP,大大节省了内存。
我是一只不知名的攻城狮。希望我的回答对你有用。谢谢大家的好评和支持!