首页 > 其他分享 >关于Android流畅度不如iOS的几点看…

关于Android流畅度不如iOS的几点看…

时间:2023-07-31 17:02:31浏览次数:38  
标签:流畅 渲染 iOS 内存 硬件加速 Android 几点


关于Android流畅度不如iOS的几点看法






关于Android流畅度不如iOS的几点看…_硬件加速

网上一名据称是前谷歌实习生的人透露了一些关于Android系统硬件加速的内幕。据称,在 Android3.0和4.0之前,并没有完整的硬件加速。他们一直在通过硬件加速绘制某些UI元素,并称效果并不像他们想象中那样乐观。他认 为,Android效率低下的设计框架使得它需要通过更强大的CPU/GPU才能确保具有100%的流畅体验。

他表示在iOS系统中,用户界面渲染的过程被赋予了很高的优先级,当触摸屏开始 操作,系统将停止所有进程,将所有资源集中对节目进行渲染。而在Android系统中,就没有这种待遇了。虽然Android手机配置普遍很高,但进程不 会为界面渲染让路,由于资源被分配到不同任务中,造成了Android操作的不流畅。


从“前谷歌”“实习生”等定语中大概就可以判断出,这些言论没什么权威性。事实上也正是如此。


事实上,Android从1.0版本之后,所有窗口元素的合成和显示,都是通过硬件完成的。按钮的动作、下拉菜单的阴影、弹出窗口和提示框的显示和隐藏等等。同时,各个窗口元素的拼接,类似的任何窗口的移动等,都是通过硬件方式渲染的。


Android4.0中最主要的改变是,在面向Android4.0或更高版本的应用中,硬件加速是被默认开启的,而不需要在配置文件中设置。在此之前,考虑到某些特殊的绘制操作光靠硬件加速无法很好的完成,强制开启的话会明显中断应用运行,故而未允许其默认打开。


关于Android流畅度不如iOS的几点看…_硬件加速

 


Android采用的是Java技术,所有应用在一个叫Dalvik的Java虚拟机中运 行,Dalvik是Android的核心,是google专门为移动设备优化的Java虚拟机,Android应用就是典型的Java应用。可以说 Java应用的优点(成熟、存在大量可重用代码)就是Android的优点,Java应用的缺点(占内存大、运行速度略低)就是Android的缺点。


所以Android移动设备要能运行顺畅,必须有高性能CPU+大内存,256M内存刚刚够,512M内存差不多了,要运行得很顺畅则需要1G内存,要知道iPhone4才512M内存。高性能CPU+大内存给基于Android的移动设备带来成本高和耗电量大两大问题。


关于Android流畅度不如iOS的几点看…_硬件加速

 


硬件加速并不如人们认为的那么完美,他占用的RAM巨大。RAM是有限的,分出一大部分去绘制,那处于运行中的进程就会缺少内存。


硬件加速并非流畅的必杀。最初的时候,Android使用了一种完全不同的渲染策略,并做了一些折中:网页被转换成一个”显示列表“,持续的在屏幕上进行绘制,而非使用块(Tiles)的形式。


关于Android流畅度不如iOS的几点看…_硬件加速

 


它的优点就是,在滚动或是缩放的时候不会发生有的块还没被渲染出来的现象。而这 个方法的不给力之处就在于页面复杂的时候,帧速就明显低了。例如Android3.0,浏览器中开始使用块的方式进行渲染,于是它可以在滚动或是放大的时 候保持一个稳定的帧速,自然也会出现新的块没有被立即渲染出来的情况。


换个角度考虑,不能把所有问题都推到硬件加速身上,让他像个救世主似的,一出手所有问题迎刃而解。首先来说,GPU的性能就限制着渲染速度。随着屏幕分辨率的不断提升,帧数和GPU的速度,尤其是内存总线带宽有很大的关系。随着像素的提升,GPU能更好的处理图像运算。


说到iOS,再说说iPhone和iPad。人们普遍认为iOS系统比Android要好,要流畅。像nexus S的硬件几乎比iPhone4先进两到三年,但流畅度比较之下,也难分伯仲。


有人说是因为架构不同,这真是没有的事。iOS和Android同属类unix系统,本质上没 有区别,CPU也同为ARM架构。即使说芯片的设计方式,Android高端机的设计也要比苹果的A4处理器要先进。现如今大多数Android机动辄上 G的内存,而iphone4还是512M,而流畅度却完胜,这大概不是硬件的问题了吧。



关于Android流畅度不如iOS的几点看…_硬件加速

 


iOS是苹果长期积累的结果,系统核心、基础服务和应用框架都采用C/C++或object-C开发,而应用采用Cocoa Touch框架,以object- C开发,应用编译后以本机代码在设备上运行,因此具有很高的运行效率。

依我看,硬件资源的运用不合理,才是导致运行效率底下的原因。


关于Android流畅度不如iOS的几点看…_硬件加速


iOS系统凭借良好的软件监控,对系统资源极端的节约。这也是为什么iOS系统能凭借 512Mb内存,却能战翻很多1G内存手机的原因。特别是在后台上。一般的后台,程序不会被关闭,而是继续在系统内部继续进行。而iOS则是将主程序关 闭,任务交给一个进程,任务完成,则关闭该进程。


这样的运行方式将内存的消耗降到最小,它不像一般的方式那样,继续开启住程序,让无用的组件继续占用内存,无法释放。普通方式在处理这些任务时,会将这些任务全部搬入系统缓存压缩或释放。在需要重新加载时,还要重新解压读取。这就导致了加载时间的增加。


iOS的任务处理方式使得任务的加载和内存的释放更加直接高效。不光如此,内存的有效整理也是iOS系统流畅的原因。它的后台程序占用内存极少,当系统资源不够时,它会自动释放长时间占用内存的进程,包括一些需要保持连接的也会被强行关闭。所 以说,你完全不必刻意去关闭后台中的软件。


此外,iOS系统还不允许自定义系统插件,这也是为什么iOS比Android流畅的原因。当你越狱后并装了若干插件,你会发现流畅度略有下降。

总结


Android采用使用最广泛java技术,开发人员众多,容易上手,但也需要较强大的硬件支 撑。而Apple iOS的体系架构相对较为传统,但运行效率高,对硬件的要求低,成本优势大,在现有的硬件条件下,应用运行具有最好的顺畅感,也更加省电。Apple iOS自成体系,系统架构朴实无华,但干净清晰,应该算是目前最有效率的移动设备操作系统。 (本文来源:泡泡网 )

标签:流畅,渲染,iOS,内存,硬件加速,Android,几点
From: https://blog.51cto.com/u_3124497/6910178

相关文章

  • iOS应用程序生命周期(前后台切换,…
    //开发app,我们要遵循apple公司的一些指导原则,原则如下:1、应用程序的状态状态如下:Notrunning 未运行 程序没启动Inactive     未激活    程序在前台运行,不过没有接收到事件。在没有事件处理情况下程序通常停留在这个状态Active      激活 ......
  • Android应用开发的插件化 模块化
    在android的项目开发中,都会遇到后期功能拓展增强与主程序代码变更的现实矛盾,也就是程序的灵活度。  由于linux平台的安全机制,再加上dalvik的特殊机制,各种权限壁垒,使得开发一个灵活多变的程序,变得比较困难,不像pc平台下那么容易。  瞅瞅elipse的插件,瞅瞅360的插件,在an......
  • Android解耦(四)基于依赖注入的解耦
    安卓开发中基于依赖注入(DI)的模块解耦1.什么是依赖注入(DI)依赖注入(DependencyInjection,简称DI)是一种设计模式,用于实现控制反转(InversionofControl,简称IoC)。控制反转是指将对象之间的依赖关系由程序代码中定义转移到外部容器中管理,从而降低对象之间的耦合度,提高代码的可维护性和......
  • JDK 版本异常导致 flutter doctor --android-licenses 出错 (class file version 61.0
    flutterdoctor--android-licensesError:AJNIerrorhasoccurred,pleasecheckyourinstallationandtryagainExceptioninthread"main"java.lang.UnsupportedClassVersionError:com/android/sdklib/tool/sdkmanager/SdkManagerClihasbeencompil......
  • mediapipe ios framework
    实现“mediapipeiosframework”教程介绍在本教程中,我将教你如何实现“mediapipeiosframework”。Mediapipe是Google开发的一款用于构建机器学习、计算机视觉和图像处理应用程序的框架。该框架提供了许多预训练的模型和工具,以帮助开发者快速构建和部署各种应用。整体流程下......
  • Android系统原理
    Android的系统架构可以分为四个层次:应用层、应用框架层、系统运行库层和Linux内核层。应用层 是直接面向用户的,包括各种应用程序和用户界面。应用框架层提供了各种API和服务,使得应用程序可以访问系统资源和功能。系统运行库层 提供各种系统库,包括C库、媒体库、图......
  • Vue3中使用TypeScript封装axios遇到的问题(AxiosRequestConfig)
    如果您有更好的解决方法,欢迎评论区评论。版本"dependencies":{"axios":"^1.0.0","vant":"^4.6.3","vue":"^3.3.4","vue-router":"^4.2.4","vuex":&quo......
  • bitwarden 私有化部署android无法登陆问题解决
    安卓版bitwarden安装使用中登陆提示“发生错误。Exceptionmessage:java.security.cert.CertPathValidatorException:Trustanchorforcertificationpathnotfound.”这个错误是因为Bitwarden的证书文件中缺少中间证书导致安卓系统的证书校验异常解决方式,生成带证书链的证......
  • 大学生用一周时间给麦当劳做了个App(iOS-SwiftUI版)
    背景有个大学生粉丝最近私信联系我,说基于我之前开源的多语言项目做了个仿麦当劳的项目,虽然只是个样子货,但是收获颇多,希望把自己写的代码开源出来供大家一起学习进度。这个小伙伴确实是非常积极上进,很多大学生,即使是计算机专业的,到毕业时都写不出一行代码,这个小伙伴是学历史的,竟然能......
  • error C1083: 无法打开包括文件:“iostream.h”: No such file or directory
    用VS2010打开VC++6程序,按下F5键会发现有错误提示:errorC1083:无法打开包括文件:“iostream.h”:Nosuchfileordirectory;而程序在VC++6中没有任何问题!主要的原因是:1.#include<iostream.h>是原来的C语言里面的,而#include<iostream>是c++的标准库里的,而要调用这个这个标准库......