我有这样的
I/global ( 3622): Loaded time zone names for en in 355ms.
I/global ( 3622): Loaded time zone names for en in 307ms.
I/global ( 3622): Loaded time zone names for en in 309ms.
I/global ( 3622): Loaded time zone names for en in 310ms.
I/global ( 3622): Loaded time zone names for en in 324ms.
我不知道这个日志是从哪里来的。
我对这个话题做了一些研究,我想它来自
new Date();
但我不确定。
我需要建议我该怎么做才能加快进度。我的应用程序现在非常慢,延迟正好在上面的五行,只需大约一秒半就可以读取时间:(.
如果你的建议是放一个全局变量,只读取一个时间,对不起,我不能这样做:(.我需要函数中的时间(不可能只读取时间一个:()。
我发现我的问题
问题是,由于SimpleDateFormat api的设计,现在没有办法绕过这个问题。只有速度更快的手机才能通过减少收集字符串的时间来解决这个问题。
所以我希望在下一个版本的android skd和更新的手机中时区不会有问题。
在那之前小心这条线
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS Z");
因为延迟来自
如果你使用没有时区的格式,它可以完美地工作(没有延迟)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
我在解析包含日期的内容流时也注意到了这一点。我意识到,在我的情况下(可能还有我们许多人的情况),创建的每个SimpleDateFormat对象的日期格式字符串都是相同的。
因此,我只创建了一个SimpleDateFormat对象,并在需要解析日期时重用它,从而解决了这个问题。实现这一点的方法太多了,这取决于代码的结构,所以我不详细介绍。
当然,在创建对象时,加载时区的延迟仍然会发生一次。
确保只实例化一个SimpleDateFormat对象,然后在需要的地方重用它。这样,时区名称将只加载一次。