1、列表滑动
记得从去年快放假的那两周,刚开始的时候,是很多人信息列表卡顿。通过不停的跟踪发现
在显示文本的时候,Android不提倡使用硬件加速的方式。虽然Android 4.0以后,Android在很多地方
都提倡用硬件加速的方式去绘图,以提高绘图效率,但对于中文的文本,这种方式是不可取的。原因在于
中文编码比较多,而使用硬件加速的时候,进行了缓存操作,导致在中文文本比较多的时候,停的刷新缓存,出现
卡顿现象。在中文文本比较多的情况下,可以通过View设置为software方式来解决这样的问题。
卡顿的问提解决后,大家都开始关注滑动效果这块了,结果是列表滑动效果很差。效果差,那就改效果吧!
确实是,有同事对这块的效果做出了改动,把Android原始的效果进行了改动。改回原始的,试了一下,效果比较差
无论是跟随效果,还是滑动效果,都不令人满意。于是重新实现了一个列表滑动算法,跟随效果上有改进,但在有的项目上,滑动效果一般。
如果不是在骁龙600上把这个算法移过去,也许我真不知道是什么原因引起的。原始的平台在刷新上,根本上达不到60fps的帧率,可惜的是,配置高了,要求也高了,重新实现的算法,在这个平台上,滑动效果和跟随性,还不是很好,对比了一下HTC的手机,发现他们比我们的效果好,参考HTC的列表滑动算法,移植到骁龙600上,效果果然编好了,可惜移植到其他平台上,效果确实一塌糊涂,原因是没有这么高的配置,刷新帧率根本上就跟不上。
可见,在列表滑动效果上,我们有四种列表滑动效果算法,然而到目前为止,并没有找到一种实现方式,
能够跟苹果的列表滑动效果相比。如果说以前是平台性能不行的话,还可以理解,但是现在在骁龙600,也没有好的实现方式。 其实在整个以Android平台上,就没有看到苹果的列表滑动效果,都是粗犷型的,不够优雅。这是硬伤,是我挥之不去的噩梦。
mdelay:mdelay是忙等待函数,在延迟过程中无法运行其他任务,延迟的时间是准确的。
msleep:休眠函数,它不涉及忙等待,延迟的时间不准确,会延长。
针对Android第三方应用的不规范行,小米2S添加了一种对齐唤醒机制。传说是为了省电,
有些软件会不定时自己唤醒运行,联网检测消息,交换数据等,每次唤醒会比较费电,CPU等要进入高速运转,
而如果把这些软件统一到每个点一起处理的话,要比它们分开处理消耗的能量总合少。不知道是不是有传说中的这么神。
记得从去年快放假的那两周,刚开始的时候,是很多人信息列表卡顿。通过不停的跟踪发现
在显示文本的时候,Android不提倡使用硬件加速的方式。虽然Android 4.0以后,Android在很多地方
都提倡用硬件加速的方式去绘图,以提高绘图效率,但对于中文的文本,这种方式是不可取的。原因在于
中文编码比较多,而使用硬件加速的时候,进行了缓存操作,导致在中文文本比较多的时候,停的刷新缓存,出现
卡顿现象。在中文文本比较多的情况下,可以通过View设置为software方式来解决这样的问题。
卡顿的问提解决后,大家都开始关注滑动效果这块了,结果是列表滑动效果很差。效果差,那就改效果吧!
确实是,有同事对这块的效果做出了改动,把Android原始的效果进行了改动。改回原始的,试了一下,效果比较差
无论是跟随效果,还是滑动效果,都不令人满意。于是重新实现了一个列表滑动算法,跟随效果上有改进,但在有的项目上,滑动效果一般。
如果不是在骁龙600上把这个算法移过去,也许我真不知道是什么原因引起的。原始的平台在刷新上,根本上达不到60fps的帧率,可惜的是,配置高了,要求也高了,重新实现的算法,在这个平台上,滑动效果和跟随性,还不是很好,对比了一下HTC的手机,发现他们比我们的效果好,参考HTC的列表滑动算法,移植到骁龙600上,效果果然编好了,可惜移植到其他平台上,效果确实一塌糊涂,原因是没有这么高的配置,刷新帧率根本上就跟不上。
可见,在列表滑动效果上,我们有四种列表滑动效果算法,然而到目前为止,并没有找到一种实现方式,
能够跟苹果的列表滑动效果相比。如果说以前是平台性能不行的话,还可以理解,但是现在在骁龙600,也没有好的实现方式。 其实在整个以Android平台上,就没有看到苹果的列表滑动效果,都是粗犷型的,不够优雅。这是硬伤,是我挥之不去的噩梦。
mdelay:mdelay是忙等待函数,在延迟过程中无法运行其他任务,延迟的时间是准确的。
msleep:休眠函数,它不涉及忙等待,延迟的时间不准确,会延长。
之所以记下这,是因为有同事在应该使用msleep的地方使用了mdelay,导致系统不时的卡顿一下,加班处理完,吸取一下血的教训。
针对Android第三方应用的不规范行,小米2S添加了一种对齐唤醒机制。传说是为了省电,
有些软件会不定时自己唤醒运行,联网检测消息,交换数据等,每次唤醒会比较费电,CPU等要进入高速运转,
而如果把这些软件统一到每个点一起处理的话,要比它们分开处理消耗的能量总合少。不知道是不是有传说中的这么神。