热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

android流畅机制,一问易答:为何安卓手机没有iPhone流畅

网易江苏省手机网友【专属你的王】在一问易答中问:小便为何配置相近的手机在Android和WP下玩同样的手机,Android没有WP流畅?小

网易江苏省手机网友【专属你的王】在一问易答中问:

41c4fb3bfae39bdbd63bb4ee0ee09f32.jpg

小便为何配置相近的手机在Android和WP下玩同样的手机,Android没有WP流畅?小便求给上榜!!!

说上榜就上榜,开心咩?很多人都会觉得Android手机没有WP手机和iPhone手机流畅,不用说配置较低的产品,即便是配置最高,采用最新版Android系统的旗舰手机,也总是会让人感觉达不到配置较低的WP手机和iPhone手机那样的流畅度,所以有人以此判断安卓手机不好。事实上,这只不过是系统方面的一些机制导致的差异,毕竟我们讲体验,并不是单纯的去看手机的流畅度的,还要综合一些细节去全面的对比。有点扯远了,说回正题吧,那么是什么样的差异导致了Android手机的流畅性略输于WP手机和iPhone手机呢?其实无非是两大机制的不同造成的:后台机制和渲染机制。

后台机制方面的区别

提到后台,大家应该会很容易想到安卓的真后台了吧,所谓真后台,就是像PC一样,将应用保留在RAM中,当你使用HOME键退出应用,程序实际上并没有完全退出,而是被系统挂在了后台,比如一些聊天软件,之所以关闭后依然能够收到推送,就是因为其常驻系统内存,能够在后台接收到通知,当然,我们平时总能够收到一些垃圾广告的推送,也是因为后台有程序运行。而正是因为有了这样的机制,就导致了一个现象,那就是从内存使用上来看,刚开机的时候内存使用很低,如果不进行清理内存的操作,正常使用一天,内存占用会达到75%以上。而内存占用越高,使用起来流畅度就会越低,所以安卓机器需要更大的RAM来提升用户体验。

而iOS方面,与安卓不同的是,其采用的是伪后台,当程序进入后台会自动变为休眠状态。当你双击Home键呼出多任务管理界面时,你会发现所有的应用卡牌都处于停止状态,iPhone只会默认将应用的最后的运行数据记录在RAM中,而之所以iOS也能够收到推送,是因为当你从应用中选择开启推送之后,系统会增加一些进程,这些进程会从苹果服务器接收信息,然后再通过服务器发给你,苹果服务器在这里是起到了中转的作用。而正是因为有了这一系列的机制,所以即便iPhone的配置相比于同类安卓机低了很多,但是iOS还是会给人更加流畅的感觉。

同iOS一样,WP系统同样采用的是伪后台,也叫做墓碑机制。相比于iOS的后台,WP的后台更加吝啬,永远只能运行一个应用,有人说WP8.1后,WP有了全新的真后台机制,变得不再伪了,可以支持后台上传、后台播放双进程等等,其实这同iOS的后台推送机制相类似,不过是WP对后台进程多做了些优化罢了,正是因为系统对后台进程的严格把控,所以我们看到即便是有着很低内存的WP手机,在使用时也是非常流畅的。

渲染机制的差异

说过了后台的机制,我们再来说下渲染机制,这一方面也是决定手机流畅度的重要因素,WP系统和iOS系统的UI渲染都采用了实时优先级,而Android的UI渲染则遵循了传统电脑模式的主线程普通优先级,说白了就是前两者追求的是主屏幕显示优先,比如在加载一个复杂网页时,WP系统和iOS系统都会优先加载主屏幕的显示区域,而Android系统则追求了进程优先,同样打开相同的网页,Android手机就会直接将整个网页全部加载同时渲染HTML,这无疑就增加了处理器的压力。

而在其他程序中,用户在使用时其实就能够感觉到,当用户接触到WP手机和iPhone手机的屏幕后,UI线程会拦截所有的事件,系统会将所有资源用于渲染UI的过程中,以保证用户界面的实时渲染优先级。而在Android系统中UI渲染过程的优先级别却没有那么高,也就是说当你触摸Android手机屏幕的时候,系统后台的程序并没有停止,仍然在继续运行之中,比如后台下载,这样系统UI获得的资源就不够,这就是Android系统不流畅的原因。

那么为什么很多配置相当恐怖的安卓机同样会出现不流畅的情况呢?这就涉及到硬件加速的问题了,对于安卓机来说,硬件加速的资源很容易被安卓的渲染机制吃光。光是打开系统内置的“所有应用”的视图,就需要绘制许多不同的窗口,系统会默认对所有像素绘制一次背景,至少需要对一半的像素绘制一次 shortcut 和 widget 层,至少需要对一半的像素绘制一次图标和标签,也需要对所有像素绘制一次“所有应用”视图的黑色背景,还有“所有应用”视图的图标和标签。而说了这么多,这还不包括对这些窗口做最后的组合,系统基本上就把GPU的资源吃光了。当然,安卓对这个机制也有优化,比如把壁纸做成一个比屏幕大的窗口,这样在主屏滚屏时就不需要重绘,只要移动窗口就行。而这个绘制好了的窗口,就不需要额外的GPU计算量了,但这也不能从根本上解决问题,综合来看,Android手机就是要比WP手机和iPhone手机吃硬件,这也算是个历史遗留问题了,何时能够解决,如何解决,我们只能耐心等待了。

Ps:鉴于大家已经对《一问易答》下方的漫画深恶痛绝了(其实小编也是),所以小编决定将选择权交给大家,有兴趣的小伙伴可以动手为本栏目提供漫画,形式不限,要求复合栏目的调调,一经采纳,将提名上版,同时可获得“手机达人”点亮红名的称号,有意者可将想对小编说的话以及漫画素材发邮件至:i_am_bing@163.com 小编等待大家的来信哦。

好啦,今天的回答就到这里,正所谓回答有长短,问题不要停,每天问一问,轻松又开心,提问要注意些什么呢?还是老生常谈的话题,亲们要仔细看清楚哦!

问题要有意义,要同手机相关,比如:“移动4G通话回落为何不是3G,3000元的预算,哪款手机值得买?”而灌水内容如“小编是SB,小编又调皮了”等都是不被推崇的,当然,如果你真的发了,小编我也只能忍下,在每周六上线的《跟帖囧选》中爆发了(桑心~~~)。

为了维护栏目优质的交流环境,希望大家能够遵守秩序,少灌水,多提问,让有需要的朋友学到知识的同时,也能够提高自己对手机的理解。

最后声明:积极回答提问的小伙伴都将获得每周六在《跟帖囧选》中的上榜机会,我们每月会评选出一份“最好学”奖以及“最热心”奖,并送出相应的神秘实物奖励,什么?你问是什么神秘奖励?跟帖点亮红名是必须的了,还有神马?恕小编不能透露太多,大家试试就知道咯。

b030ee3127b406d706b1aa83baaf136f.jpg

ba46b803aa64749147cccef59bc1cdcb.jpg

9c8ace2cef9d0c4a4b408850659e4d14.png



推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • Android图形架构学习笔记(待修改)
    以下简单总结来自Android官网,稍作总结:https:source.android.google.cndevicesgraphics概览Andr ... [详细]
author-avatar
有颜色的狼的天空
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有