手机屏幕上数据加载电脑屏幕在哪里设置置

Android 的屏幕滚动操作不如 iPhone 流畅顺滑,是什么原因导致的?
如题,比如刷微博时上下滚屏明显不如iPhone跟手(即便是13,14年的旗舰机,拖动起来也没有10年的iPhone4跟手),这是安卓系统底层跟iOS的差距,还是说安卓手机的屏幕反应速度都不如iPhone的?
按投票排序
105 个回答
几个高票答案说的都是现象而非原因。对 @劉長曦 专栏提到的 g+ 讨论做了个摘要,出处在此首先,安卓不缺硬件加速的支持。从安卓 1.0 开始,安卓就支持硬件加速。菜单的显示/隐藏、提醒的滑动渐变、Activity 之间的过渡以及对话框的显示/隐藏等都是经过硬件加速的。但硬件加速与安卓「窗口」的概念有关。比如以下这张截图,就包含四个窗口: 状态栏窗口 / 壁纸窗口 / 壁纸上的启动器窗口 / 菜单窗口安卓一开始的设计目标是「提供开放的应用平台」,在这种设计思路下,安卓通过许多个独立的 UI 元素来分享屏幕:比如输入法窗口和应用窗口就是两个不同的窗口。而同一个安卓应用,也由许多 Activity 组成(比如联系人列表是一个 Activity,联系人详情是另一个 Activity),每个 Activity 又有自己的窗口。发现了吗?安卓 UI 一切皆窗口:从主屏打开联系人应用,你看到的是主屏窗口和联系人列表窗口的动画;按下联系人查看详情,是联系人列表窗口和联系人详情窗口的动画;显示输入法,是键盘窗口的动画...早期的安卓使用软件来渲染窗口内的内容:在 2.3 前,窗口内容由软件渲染,而窗口的组合 / 移动则通过硬件加速绘制。安卓 3.0 起,改进了对硬件加速的支持,可以用硬件加速绘制一些窗口内的内容,(感谢
指正,还是有些绘图的API没有完全用硬件加速实现,需要开发者手动选择渲染方式。老应用跑在新版系统上强制开启硬件加速有可能出现异常,就是因为系统的某些绘图 API 没有完全实现硬件加速,而强制使用可能就会出现问题。)随着安卓版本更新,窗口内容对硬件加速的支持一直在改进,可以参考这里 。但为什么即便支持了硬件加速,也不能完全保证流畅度呢?事实上,安卓的这个多窗口设计,意味着 GPU 需要同时支持不同进程的多个活动 GL 上下文。而即便到现在,多数移动 GPU 执行上下文切换的代价还是相当高的。虽然安卓有堆硬件这一说,但硬件加速的资源也很容易被安卓的渲染机制吃光。比方说,Tegra 2 足够在 60 帧下把
屏幕的每个像素点渲染 2.5 次。但安卓 3.0 中,光是打开「所有应用」的视图,就需要绘制许多不同的窗口:需要对所有像素绘制一次背景;(往少了说)需要对一半的像素绘制一次 shortcut 和 widget 层;需要对一半的像素绘制一次图标和标签;也需要对所有像素绘制一次「所有应用」视图的黑色背景,还有「所有应用」视图的图标和标签...还不算对这些窗口做最后的组合,就把 GPU 的资源吃光了。当然,安卓对这个机制也有优化,比如把壁纸做成一个比屏幕大的窗口,这样在主屏滚屏时就不需要重绘,只要移动窗口就行。而这个绘制好了的窗口,就不需要额外的 GPU 计算量了。另一方面,OpenGL 硬件加速绘图也不是万能的,Nexus S 和 Galaxy Nexus 中,每个 OpenGL 应用会占用 8MB 内存。要知道 2MB 的进程开支都是个不小的代价。这 8MB 内存可能从后台进程那里分配而来,造成应用切换速度的下降。为了提升流畅度,还需要许多其他方面的努力:安卓 1.6 对前后台进程调度的优化、2.3 中对输入系统的重写、 加入并发的垃圾收集等。举一个流畅度不由硬件加速决定的例子:对滚屏操作,Nexus S 在 ICS 上的流畅度比在 2.3 中要低。这其实是因为计时机制发生了变化,有时在 ICS 中,当应用接收触摸事件并绘图时,可能在尚未准备好的情况下就获得了下一个事件,从而导致跟踪手指移动时可能错过一帧,但这时帧率仍然是 60fps (这个 bug 已经修复了)。@Julius 提到的是关于浏览器的渲染情况。在这方面,安卓和 iOS 的主要差别并非来自硬件加速绘图。早期安卓在渲染网页时做了与 iOS 不同的折衷:将网页以序列方式连续显示,而非贴片方式。这样在滚屏和缩放时不会出现 Safari 那样的占位符,但渲染的帧率不够快。安卓 3.0 后改用了贴片方式,改善了滚屏和缩放的体验。但不论是安卓还是 iOS,贴片都是由 CPU 渲染的。还有,「安卓后台应用太多吃资源」的说法也有问题。安卓的 UI 线程以默认优先级运行,后台线程以后台优先级运行。切换到后台的应用强制以后台优先级运行。而后台优先级利用了 Linux 的 cgroup 机制,它将所有的后台线程放进一个特别的调度组中,它们满打满算也无法占用超过 10% 的 CPU 资源。「安卓的触摸事件不像 iOS 那样优先」的说法也是错的。你可以架梯子看看安卓进程的优先级设定总的来说,根据 Dianne 的说法,多窗口设计对屏幕绘制的开销,是影响安卓的流畅度的已知因素之一。但决定「流畅」的因素还有很多,抓住某个特定技术细节不放的说法都是有失偏颇的。以上。
日更新:上次主要针对题主说的具体问题“刷微博在苹果和Android手机上的差异”在具体的设备上做实验后进行了分析。今天我对“Android的流畅性”做个更进一步的讨论。加在后面。===============================================================我来说下我所知道的事情。我不知道iOS为什么流畅,但我知道一些Android为什么不流畅的原因。首先,就题主所说的问题,我用iPad和小米Pad对比了一下微博滑动滚屏这件事情(日目前微博app最新版本,打开的是“首页”和“发现”栏)。正如题主所说,直观感受上明显感觉iOS要流畅、舒服。在这件事情上我认为主要是这三个原因:速度曲线。当你滑动界面然后松手,这时界面会继续滑动,然后速度减小,直到速度为0时停止。iOS下速度减小的这个过程比较慢,尤其是快要停的时候是慢慢停的,视觉上有种很顺滑的感觉;Android下则从松手到停要快很多,相比之下有种戛然而止的感觉。从数据/技术角度来看这个事情,我们滑动界面的最终目的不是为了“动”,而是为了“停”,因此只要平滑的到达目的地,似乎越快完成这个过程越好,所以Android的选择是理所当然的。但事实是,大家普遍更喜欢iOS的方式,这样做显得更顺滑、更优雅。帧率。绝大部分时间两者都能保持60FPS左右的满帧率。但都会有偶尔的掉帧。并且Android上要比iOS上严重很多。(好吧,比起前两年,已经好太多了。)我前前后后滑动了几十次,iOS在前面遇到1次掉帧,后面就很稳定了。而Android几乎每滑动一次都会伴随一次掉帧。这完全就是真真实实的卡顿,用户必然会感觉到那一刻的不流畅。Android掉帧的原因我后面再详细分析。触摸响应速度。从手指碰到触摸屏,到屏幕上显示处理这次触摸产生的画面,是需要时间的。时间越短感觉越跟手。据说iOS的触摸屏的处理时间要比一般的Android手机快,这不是我的专长,不知道怎么验证。但在软件系统层面,Android的显示机制是app--&SurfaceFlinger--&Display,这比传统的app--&Display多了一步,主要基于这个原因,画面最终输出到屏幕要比传统的方式慢一帧(16.7ms)。我觉得第1点造成的影响最大,恰恰却是最技术/设备无关的。如果微博app或者Android系统要改变,很容易就可以调得跟iOS一模一样。但正是由于这是产品形态上的差别而不是纯粹技术上的优劣,反倒成了Android最不太可能改变的。第2点的影响其次,当然是指在目前这个大部分时候都能满帧的情况下。这方面是Android从早期到现在进步最明显的方面,使用了很多方法来优化帧率。但就算现在Android进化了很多,硬件性能也进化了很多,却仍旧不可能彻底消灭掉帧的情况。第3点通俗的讲就是跟手性,跟手性的重要性不言而喻,但现在的差别比较细微,且具体数据我也不清楚。我想过一个办法让桌面、微博这种内容和手一起动的应用绘制到屏幕的速度快一帧(16.7ms),其实就是抵消之前提到的慢的那一帧,需要framework层和app层一起配合改动,目前已申请了专利但代码还没进,将来有时间了应该会进到MIUI。感兴趣的可以看看专利:。===============================================================最后我来用专业技术分析一下微博app在Android里掉帧的原因。非编程人员可以跳过。(这个过程我使用的是小米3高通版+最新版微博app。)最初,我认为这种现象很像GC(垃圾回收)导致的,于是打开logcat观察每次卡顿的时候有没有GC发生。结果发现并没有。停下来的时候才会有GC,这说明微博app在滑动过程中控制得不错,在停下来的一刻才去分配内存,使GC不影响帧率。然后我打开“开发者选项”-&“GPU呈现模式分析”-&“在屏幕上显示为条形图”(好像是4.4才有这个选项,之前的只能在dumpsys里看),这会在屏幕上直观的显示每帧绘制花费的时间。屏幕上有条基准线大概是16ms,如果超过这条线则很有可能掉帧了。如果下面的蓝色部分很长则说明是软件draw的部分太费时,那么可以通过traceview来继续分析draw的java代码。(我假定了现在的app都是硬件加速的方式。)如果中间红色部分很长则说明是OpenGL ES绘制过程太费时。可以用gltrace来分析OpenGL ES的调用过程。打开选项后使用微博app,发现虽然偶尔有超基准线,但并不严重,并且卡顿的时候并没有明显异常。于是我开始使用systrace,这下就很明显了:可以发现每隔几帧,就会有一次大间隙,图中我圈了红圈圈的两个地方都明显超过正常的耗时时间。现在问题是,这些地方的代码在干什么呢?是什么花费了这么长时间?可以发现每隔几帧,就会有一次大间隙,图中我圈了红圈圈的两个地方都明显超过正常的耗时时间。现在问题是,这些地方的代码在干什么呢?是什么花费了这么长时间?放大后发现都是这两个:obtainView和setupListItem。它们都是在draw之前调用的,这也解释了通过上一步的方法(“GPU呈现模式分析”)为什么没有显示出来,因为那个方法只展示draw里面的时间消耗。放大后发现都是这两个:obtainView和setupListItem。它们都是在draw之前调用的,这也解释了通过上一步的方法(“GPU呈现模式分析”)为什么没有显示出来,因为那个方法只展示draw里面的时间消耗。通过在源码里搜索obtainView和setupListItem,可以发现是AbsListView的obtainView方法和ListView的setupChild方法打下的这个log。接下来,我们用traceview来看看这两个方法里面究竟调用了什么代码导致耗时过长。跟踪obtainView最终到了这里:代码混淆了,看不太出来了,也懒得再跟下去了。但随便点了点然后看到:代码混淆了,看不太出来了,也懒得再跟下去了。但随便点了点然后看到:TextView.setText用了挺多的时间。感觉Android团队应该优化优化这个方法。TextView.setText用了挺多的时间。感觉Android团队应该优化优化这个方法。然后再来跟踪setupChild方法:都是measure占用的时间,并且调用次数比较多。这应该说明了View的数量不少。用hierarchyviewer看了下,的确不少,一条微博有50多个View:都是measure占用的时间,并且调用次数比较多。这应该说明了View的数量不少。用hierarchyviewer看了下,的确不少,一条微博有50多个View:结论:我们最终大致找到了耗时的代码及部分原因。这两个耗时方法应该都是有可能减下来的,但应该不那么容易。===============================================================具体问题分析完了,这里讲讲整体Android的流畅问题。先聊聊目前最高票数的答案 邑封:。总的来讲,前面的内容都没问题:Android从最初就对Window级别的动画用了硬件加速(在SurfaceFlinger用OpenGL ES绘制)。3.0开始View也可用硬件加速来绘制。随后这个答案里说多个窗口的不同进程中的GL上下文切换代价很高。首先,现在的GPU一般都有MMU,可以方便的切换上下文。其次,大部分的情况下,Android都只有一个需要GL绘制的窗口,就是当前使用的app窗口。其他显示的窗口如状态栏,在没有内容更新的时候是不需要绘制的,SurfaceFlinger上已经存储着上一次绘制的结果。答案里提到了窗口内容“最后的组合”,这个是每帧都要做的,只是,SurfaceFlinger在大部分情况下是用的Hardware Composer以overlay的方式来合成的,并不需要OpenGL ES,在不满足Hardware Composer合成条件的情况下才会用OpenGL ES合成。Hardware Composer比OpenGL ES的方式性能更好、耗电更低。(我们有过测试,我们的数据是耗电大概少20%)。这里再说一下究竟哪些情况是可以用Hardware Composer来合成的,Android对厂商的建议是有虚拟键的应支持4层合成(常规的桌面:壁纸+桌面+状态栏+虚拟键),没有虚拟键的是3层。这可以看出在桌面上放一个第三方app的悬浮窗口对性能及耗电是有不小影响的。随后答案提到渲染2.5次的数据。是的,我曾在某Google工作人员博客或是官方文档里看到这样的说法,建议我们每个窗口渲染的像素数不要超过窗口大小的2.5倍。于是我写了个程序测试每帧绘制全屏图片N次时的帧率。测试程序:源码:大家都可以下载这个程序测试自己手机的表现结果。主要测试像素渲染性能、纹理加载性能。(点击“开始测试”后,中间的数字是最近1秒绘制的帧数,通常越大越好。)我的测试结果是在米2上可以绘制18次全屏图像仍然满帧率。在米4上绘制21次仍然是满帧率。可以看到现在的GPU渲染性能是非常好的。单纯的渲染像素数量不会是瓶颈。(当然,可以的话还是渲染内容越少越好。)最后答案说:后台程序优先级低,它们满打满算也无法占用超过 10% 的 CPU 资源。于是我又写了个测试程序:源码:(点击“启动线程”后按HOME键退出,看其他app是否使用流畅。按Back退出也行,不过会有内存泄露。)测试结果发现后台进程的CPU占用的确被限制了,对其他app的UI流畅性影响很小。不过可惜,Android的设计一直是本着开放的态度,它允许我们自己把自己声明为前台进程(测试程序中点击“启动前台服务”),虽然被切换到后台了,可还是按前台进程来对待。经测试,这时候其他app的界面卡得一塌糊涂。桌面滑动非常卡。顺便说一下,这种把自己声明为前台进程的程序,第三方app没ROOT的话是杀不死它的。在MIUI里,则可以被“最近任务”界面的上划图标或一键清理给杀死的。(想到了MIUI 6安全中心的一句台词:系统级的安全)对于Android系统的流畅性,Android确实为之做了很多努力,如:窗口级动画早就是硬件加速,Android3.0开始View级绘制也支持硬件加速,Android4.1使用VSync和3缓冲,SurfaceFlinger的overlay机制,等等。但Android的坑也很多:垃圾回收时会暂停所有线程,碰到几乎必然卡帧。(最近改善:4.4允许图片在不同大小时重用;ART改善垃圾回收。)上面说了渲染像素是非常快的,可是纹理加载则是非常慢的。上面提到米2可以绘制18次全屏图像保持满帧率,可如果每帧都修改则只能承受一张的全屏图像,当有2张全屏图像每帧都修改的话就达不到满帧率了。(测试程序选上“每帧修改图片”可以测试这个。)基于这个原因,频繁修改的软件层View慎用。设置View的alpha会导致每次发生离屏缓冲。(最近改善:大概是4.2开始可以设置为alpha不导致离屏缓冲)Canvas的saveLayer不加CLIP_TO_LAYER_SAVE_FLAG则会有个Texture Copy方法非常耗时。某些情况下设置alpha等也会碰到。某些情况下碰到quickReject失效时会尝试绘制不在屏幕上的元素。等等。总之,在Android上实现功能比较容易,但如果默认实现有了性能问题,要想解决就不好说了,有时候要绕很远,有时候甚至绕不过去。===============================================================注:第一个测试程序里“图片数量”大于一定值(我的米2是13)的时候帧率会大幅降低,这是因为超过了纹理缓存最大值。相关链接:Android图形架构(绘图慢一帧的事情这里有说):Android Performance Case Study:
目前绝大多数主流Android手机性能都是过硬的,以Nexus 5为例,刷了Android L以后在Art环境和硬件加速的双重作用下,Google+列表也是极为跟手的,但对比iOS上相同应用,你或许还是会觉得iOS更为流畅。我认为主要原因是列表滚动的算法的差异,滑动流畅是一种视觉上的感觉,受到阻尼,动画曲线等各方面影响,并不是帧率能说明问题的(现在还写不出60帧列表的程序员该打板子好吗),Android scroller算法虽然一直在优化,但就目前的效果来看也就是刚好能work并不能实现非常自然的滚动效果,举个栗子:当你以极快的速度滚动列表时,在Android上列表会加速到一个超出预期的滚动速度,视觉上会觉得非常生硬,而iOS列表会保持一个合理的滚动速度,每一帧都如丝般顺滑。
我是来告诉暂时排名第一的
,数据陈旧是要不得的。具体看原文:觉得不跟手是屏幕响应时间问题为主还是软件优化问题为主,应该可以判断了。
=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=写了这个回答,是为了指明当时排第一的
的回答中,作为论据的客观测试数据太过陈旧,无法支撑其论点。那时
的答案在众多不带思考的赞同下扶摇直上,甩所有答案一大截,我觉得对大家的误导过大所以写了这个没有真正回答题主问题本身的回答。就问题本身而言,推荐各位看
其实我觉得最主要还是开发者对于应用的优化不够,太多的Overdraw和Layout方面的问题,Android开发者本身为了适配屏幕分辨率和解决其他一些兼容性问题已经耗费很多精力了,很少有开发者会花很多精力去做细致的性能优化,有的甚至连优化的方向都不知道。现在的官方微博客户端要我看在Overdraw方面还是很严重,然后在异步加载图片的时候帧率也不够稳定,算不上流畅。再则由于Android平台本身机能没有强大到优化烂的应用也能跑的非常流畅暴露了优化不够的事实,特别是手机厂商的定制ROM相比原生系统都一定程度牺牲了一些流畅性导致这个问题显露的更加明显,所以在Android上面作出流畅的应用要付出比iOS更多的精力。其实Google这些年一直在系统层面作出努力提升系统的UI性能,从硬件加速到Project Butter到Reorder&Merge绘图操作等等,但是我感觉Google对于Android开发最佳实战宣传不够,国内有多少开发者上Youtube看过I/O大会上面的Android Session?几乎每年都有讲关于系统图形性能方面的Session。所以这里面也有国内开发者开发水平和眼界的问题。综上所述:一是受限于Android平台本身性能不够强大做出相同流畅度的应用比iOS更加困难,二是国内开发者对于Android开发性能优化方面的最佳实践知之甚少。update:某些答案中说屏幕触摸反应速度是影响流畅度最大问题的回答并不靠谱。我本身是做Android应用程序开发的,我举一个例子就能质疑这个结论:为什么原生系统(比如运行Android4.4的Nexus5)上面自带的App能运行得丝般顺滑而第3方开发的应用(特别是国内应用)就普遍比较卡?他们的运行环境是一样的吧?屏幕也是一样的吧?为什么流畅度就硬是差一些呢?原因就是SystemApp是Google开发的,他们的开发人员了解如何做出性能优秀的应用,了解Andorid开发的最佳实践。而第3方的开发者水平参差不齐,优化经验不如Google开发人员,导致写出的应用运行效率也不如SystemApp,站在同一个系统和运行环境里面讲,这就是最主要的原因。 上面的一些测试,能反映的最多也只是当手指触摸到屏幕的那个瞬态反应的延迟,并不能完全说明Android不如iOS流畅的原因。我觉得流畅性主要表现再2个方面:一个是触摸反应延迟,一个是渲染的帧率,而且后一个的重要性更大。可以想象一下从手指开始触摸屏幕到UI开始滑动的那100ms的延迟给你造成的不流畅感觉大,还是在滑动过程中不稳定帧率造成的卡顿感觉大?其实Google这些年的Android版本更新也一直致力于改善屏幕触摸延迟(找了个4.4的更新介绍有兴趣的可以看看:),虽然可能还是比不上iOS,但是我觉得在这方面的差距已经很微小,带来的感受上的差异也是很微妙不容察觉。更多的不流畅性还是体现在优化烂的应用运行不稳定的帧率上面,比如在某个瞬态后台线程异步加载图片完成后在UI进程执行某个callback方法要显示,如果图片太大就需要根据ScaleType实时缩放到适合的尺寸显示到ImageView上面,这个时候如果图片太大缩放操作时间太长就有可能造成主线程阻塞较长时间,影响了系统UI进程在单位时间片内的渲染,导致掉帧。我再举一个例子也能反驳屏幕触摸反应速度是影响流畅度最大问题的观点:为什么在滑动显示单行文字的列表项一般不会觉得卡,而显示比较复杂布局的列表项(如微博)会比较卡?他们的屏幕和运行环境是一样的吧?触摸延迟都存在吧?为什么呢?这是由于列表项的布局过于复杂,UI控件在整个绘制的过程中(onMeasure()测量大小-&onLayout()分配位置-&onDraw()绘制)会花费更多的时间,比如各UI控件之间的相对位置和大小可能是互相影响的,这就导致在渲染每一帧的时候需要更多的时间来计算大小和确定位置,然后绘制阶段也需要多执行一些绘图操作来画完所有的UI控件。面对复杂的界面,有经验的开发者会尽量去避免界面的Overdraw(过渡绘制),减少UI层级,选用性能更好的ViewGroup(比如FrameLayout性能比LinearLayout好,LinearLayout性能比RelativeLayout性能好,但是布局能力最强大适应性最好的是RelativeLayout,在功能实现和性能优化中平衡达到最优需要经验),避免图片实时缩放,避免在调用频繁的关键的路径创建对象减少gc频率,合理的管理Bitmap大对象(LruCache)等等(当然还有其他一些优化技巧不在此一一列举了)。还有讲什么进程优先级问题的答案说的也不是最主要的原因,Android的UI渲染进程的优先级可能不是最高但也是比较高的,不会说他UI渲染优先级设置到比后台线程还低的情况,这点不用过度讨论,Google也没蠢到那种地步,不服自己去看Android SDK源代码。我不否认屏幕触摸延迟也是造成Android滑动感觉不流畅的原因之一,但是站在一个开发者看到的角度来讲,我觉得在现有Android最新版本的系统优化下,他的影响远没有应用优化烂带来的影响大,优化好的Android应用跑在最新的Android版本上基本可以运行的跟iOS应用一样流畅。
我所知道的有两方面问题:1、Android是个设计比较现代的系统,所有程序都运行在独立的沙盒中,以保证安全性和系统的稳定性。比如我现在在打字这个屏幕中,显示着状态栏这个程序,知乎这个程序以及虚拟键盘这个程序。用户看到的每个界面都是系统把所有需要显示的程序的界面合成之后呈现的。这个过程比传统操作系统复杂,因此延迟较高,而且早期手机GPU还不支持多目标2D加速故不能有效地使用GPU,因此卡顿。即使到4.4的今天,动画帧数仍然是个话题,所以屏幕合成还是比较消耗性能的。这一点
的答案比较准确详实2、Dalvik VM的垃圾回收存在卡顿现象,而Android单个进程允许的内存比较小,所以滚动列表需要不停地释放内存和加载新内容,也就格外容易感到卡。ART显著降低垃圾回收内存消耗,应该是值得期待的。WP对程序内存使用也有较多限制,所以有各种“加载中”,并且早期列表滚动很卡。
你们只看到了开发者,忽视了手机。大多数手机的屏幕调教决定了不可能跟手。不信去开发者选项勾选显示触摸操作,然后快速在屏幕上乱画,你看那个圆点的运动轨迹。大多数都不跟手。这种手机应用再好也会有影响的。
试了一下,iOS和Android下上下拖动网页感觉不出来明显的不同,倒是两指缩放,iOS明显要快一些,能达到跟手的频率至少比Android高1/2。不过还是要看不同的应用的,应用写不好怎么都白搭,比如最近搜狐视频iOS客户端就卡得要命,每次点击都需要2分钟的时间才有反应。
iOS优先反应屏幕,Android优先处理程序框架
晚上看文档看到一点东西,供参考。原网址:The key to a smoothly scrolling
is to keep the application’s main thread (the UI thread) free from heavy processing. Ensure you do any disk access, network access, or SQL access in a separate thread. To test the status of your app, you can enable .======================================================================对于不跟手的现象,我觉得是因为触摸屏响应慢了点,不是有测试说iPhone的触摸屏响应速度最快么?对于流畅,我觉得与GPU渲染有关,我手上的手机是Moto G,运行Android 4.4.4,GPU渲染是开着的,使用知乎客户端的时候,怎么滚动,都是流畅的,还有一台电信送的华为机,GPU渲染没有开,使用知乎客户端时,上下滚动会有卡顿。
這不是性能問題,是設計問題。「跟手」和「流暢」不是可測量的參數,而是人的心理感覺。光看觸屏響應時間不能說明哪個更流暢,正如 1300 萬像素的攝像頭拍出的照片不一定比 800 萬像素的攝像頭好。
咱觉得这版微博优化还行,硬件加速、图片延迟加载都有,我手边三年前的机器都能跑到满帧。题主可以去下个 FPS Meter(测帧数的,需要 ROOT 权限,MIUI 需要允许悬浮窗),然后再去刷你的微博,滚动时右上角接近 60FPS 的话, 的答案就很可能是最符合你的提问的 —— 问题在于手机屏幕调教,而不在 App 开发者。其实只要是触屏,都肯定会有轻微的延迟。可以尝试在开发者选项里把「显示触摸操作」打开,然后手指在屏幕上画圈,不需要很快 —— 如果完全没有延迟的话,圆点就应该可以一直被手指遮住 —— 但实际上,无论是什么 Android 设备,一定可以看得到指示触摸的圆点。以及,在满帧情况下的这种「滑动不跟手」,还有可能是软件本身就是这么设计的滚动算法 —— 比如有几个版本的 Sense 里自带相册的缩放和滑动都不跟手得很夸张;比如在 GO 桌面的设置里,你可以把滑动速度调到最慢,就会发现虽然流畅依旧,但明显不跟手;又比如 Wacom 的「卷动」,也是可以按个人喜好,使滚动视图完全不跟手(更快或者更慢)。对于电容屏而言,屏幕采集到手的「轨迹」,其实是一系列连续的点。如果在 Android 的开发者选项里打开「指针位置」,快速地在屏幕上划一下(划完后手指离开屏幕),在末端会看到有轨迹不止一条:蓝色那个就是屏幕采集的实际轨迹(可以看到是几个点连接成的),紫色的是推算的「手指离开屏幕」过程的平滑轨迹。// (由于看不出轨迹随时间的变化过程,这个并不能解释滚动视图不跟手的现象。)显然,无论是哪个次元的算法,不经过几个采集周期,就无法得到红色的平滑曲线。滚动要做到平滑流畅,也是要对多个采集点上的速度做平均,所以某种意义上,完全的「跟手」是不存在的 —— 只不过是 iOS 设备的软硬件都足够优秀,这一过程处理得足以让人的感官认为是「跟手」的。类似这样的「考虑到硬件采集的触摸轨迹本身不平滑,于是延迟一段时间来算平滑轨迹」的设计还有——
你手指一接触iPhone屏幕,内存基本就让给了UI,再加上单线程能力极强的A6、A7,无比流畅的感觉就产生了 。
硬件:iPhone的屏幕响应速度比绝大多数Android手机都要快应用:由于Android对第三方应用限制宽松,一些应用使用了非官方控件,代码优化不好会严重影响反应速度。这方面国产应用最多系统:Android手机厂商大都对系统进行了定制,如果只是改改颜色、按钮样式对应用影响不大,但很多定制ROM会改变一些系统底层文件,从而影响第三方应用运行,比如smartbar。版本:Android手机有多个版本分布,虽然Google play services能为低版本系统提供最新API支持,但国内手机大都不带Google apps,新版本应用对低版本系统的支持度肯定不好。说这么多,其实我想说的是,手机硬件发展到今天,除非你买了个四五百块钱的Android手机,不然流畅性已经不会影响你使用Android手机的体验了,普通用户也感觉不出来那几十毫秒差别的响应速度。
额,回答好多人啊,看来我程序员屌丝大军还是很可观的。回答一下吧,你的旗舰机的分辨率不知道要比10年的小苹果大多少了,一点可比性都没有。虽然代码效率有一定关系,但主要还是分辨率。
这是应用设计水平问题。Android里面什么渣应用都能过审核都能上架,所以开发商通常不自觉的降低了对Android应用性能的优化。实际上只要用心优化,Android应用一样可以很跟手,只不过大多数产商没动力做而已。亲儿子装google原生应用是很称手的,一部分对Android很认真的开发者也开发出了在Android下体验很好的应用。…………只不过这些开发者一般就没怎么在意iOS版本而已。开发者的能力是有限的,倾向性是明显的,ios版做得好的应用,Android版本经常不认真做,而Android版做得好的应用,iOS版很可能没有或者很简陋。
举个相机的例子,ip的相机点击对焦后,屏幕上很快出现对焦的符号,但是对焦声音却是在后面,说明什么,说明ip为了让人感觉良好做了点小动作,至于这样做好不好,不好说,强迫症患者估计不会这么认为。
因为题主的Android手机太渣了。Nexus4用了一年多依旧流畅
我自己用的nexus5,很流畅,微博这个软件就可以看出,用weico和fuubo很流畅,Google+更是如此,但是换成官方的,呵呵。所以我觉得还是app不用心和一些第三方rom自带软件太多导致的
iOS解决卡顿问题的两大绝技:一个是延长动画时间,让人感觉如德芙般丝滑的同时忘记其实是个Loading过程,只不过比Android的转圈圈processbar好看多了。另一个就是切回程序时先显示上次退出的截图,偷偷再加载程序,让人觉得卧草好屌啊瞬间秒开有木有!}

我要回帖

更多关于 excel加载项在哪里 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信