当在Android系统中切换语言时,会带来一个有趣的bug:SimpleDateFormat在处理“z”时区字段时会花费很长的时间。如果你在一个ListView里多次调用这个方法,就会发现这个ListView在滚动时很不流畅。控制台相关输出如下所示:
其他开发者的反馈可见:
http://stackoverflow.com/questions/3905545/android-load-timezone-too-long-loaded-time-zone-names-for-en-us
http://stackoverflow.com/questions/2853058/weird-parsing-date-string-error-in-android-2-0-emulator
这是因为时区字段在Android系统中是被设计为延迟初始化的,只有在第一次使用到时才会去获取,并保存在缓存中,随后都会从这个缓存中去获取。但是根据之前SimpleDateFormat API的设计,没有方法来达到这个目的。在Android官方issues里也反复提到了这个问题,从2009年被发现到现在,都始终没有解决。参见:http://code.google.com/p/android/issues/detail?id=3147和http://code.google.com/p/android/issues/detail?id=16126。
在期待Android系统修复这个问题或者越来越快的系统硬件支持之外,基本很难处理这个系统原生的bug,但是我们可以通过一个简单的办法来改进这个问题。核心的思路就是缓存时区带来的偏移值。我们只需要在第一次加载时获取这个偏移值并存储,然后在以后每一次根据这个偏移值算出真实的时间值,代码如下:
通过这种简单的方式我们可以暂时解决Android系统的疑难bug,带来了一种解决问题的不同思路。
分享到:
相关推荐
巧解cpu温度过高问题.docx
c# 链环 问题 巧解结构和函数的应用 (2,3)与(3,2)类似的环节的个数并输出
巧解XP升Win8磁盘问题.docx
第25讲巧解小数与分数互化问题.pdf
一键巧解CPU占用率过高难题.pdf
齐次平移巧解一类圆锥曲线问题.pdf
58巧解相同元素的排列问题[归类].pdf
用数学模型巧解排列组合问题.doc
四年级奥数巧解追及问题教案.doc
公务员考试行测:巧解青蛙跳井问题.pdf
奥林匹克竞赛千题巧解·初中一年级数学
导数结合洛必达法则巧解恒成立问题.doc
用运动图象巧解直线运动问题测试[精选].doc
行测数量关系49个常见问题公式法巧解.pdf
奥林匹克竞赛千题巧解·初中二年级数学
四年级奥数巧解追与问题教(学)案.doc
四年级奥数巧解追与问题教(学)案.doc
该书全面介绍了向量在代数、三角函数、平面几何、立体几何、解析几何方面的应用,重点介绍了在立体几何和解析几何领域的应用。内容独特、题型全面。
巧解阅读理解中关于作者意图、观点、态度的问题.doc
当用于建立连接的安全信道由于某种原因失败时,如果没有其他的本地管理员账户,则必须以安全模式重启计算机来修复造成连接状态中断的问题。WinXP采用数字签名式的驱动程序模式,对各种硬件的检测比以往严格,所以...