我正在编写的应用程序使用HorrorRSS library加载RSS源。我面临的问题是,查看日志,我看到了这个垃圾的根源:

10-06 12:58:36.939: I/global(3159): Loaded time zone names for en in 624ms.
10-06 12:58:37.329: I/global(3159): Loaded time zone names for en in 368ms.
10-06 12:58:37.709: I/global(3159): Loaded time zone names for en in 370ms.
10-06 12:58:38.149: I/global(3159): Loaded time zone names for en in 403ms.
10-06 12:58:38.589: I/global(3159): Loaded time zone names for en in 420ms.
10-06 12:58:39.039: I/global(3159): Loaded time zone names for en in 446ms.
10-06 12:58:39.449: I/global(3159): Loaded time zone names for en in 393ms.
10-06 12:58:39.859: I/global(3159): Loaded time zone names for en in 396ms.
10-06 12:58:40.269: I/global(3159): Loaded time zone names for en in 401ms.
10-06 12:58:40.749: I/global(3159): Loaded time zone names for en in 459ms.
10-06 12:58:41.159: I/global(3159): Loaded time zone names for en in 404ms.
10-06 12:58:41.549: I/global(3159): Loaded time zone names for en in 380ms.
10-06 12:58:41.919: I/global(3159): Loaded time zone names for en in 366ms.
10-06 12:58:42.289: I/global(3159): Loaded time zone names for en in 363ms.
10-06 12:58:42.659: I/global(3159): Loaded time zone names for en in 368ms.
10-06 12:58:43.109: I/global(3159): Loaded time zone names for en in 437ms.
10-06 12:58:43.489: I/global(3159): Loaded time zone names for en in 377ms.
10-06 12:58:43.879: I/global(3159): Loaded time zone names for en in 387ms.
10-06 12:58:44.279: I/global(3159): Loaded time zone names for en in 387ms.
10-06 12:58:44.649: I/global(3159): Loaded time zone names for en in 367ms.
10-06 12:58:45.029: I/global(3159): Loaded time zone names for en in 379ms.
10-06 12:58:45.469: I/global(3159): Loaded time zone names for en in 438ms.


我意识到this question中所述的SimpleDateFormat类存在问题,看起来像RssParser.getDate() function uses it to extract the date from the RSS feed

这些声明似乎是在我加载Feed后立即发生的,即:

RssParser rss = new RssParser();
RssFeed feed = rss.load("some feed url");
// This is where the log statements begin appearing.


我可以理解为什么在第一次调用SimpleDateFormat时将它们记录一次。但是,有谁知道为什么一遍又一遍地记录这些语句,以及如何防止它们出现?它们使我的应用无法运行,而一半的时间是Android系统认为它过于占用资源,甚至在加载UI之前就将其杀死。

如果时区名称在第一次调用SimpleDateFormat时仅加载一次,则完全可以接受。但是,每当我加载一个RSS feed时,我都会得到许多这样的日志。有没有办法打开缓存或其他?

任何帮助将不胜感激。在解决之前,我基本上已经死在水中了。

更新:我已经向HorrorRSS项目提交了一个问题,以使其RssParser.getDate()方法受到保护或公开。然后,我将能够提供自己的使用类似于JodaTime的实现。我认为这会起作用。有什么想法吗?

最佳答案

我最终将HorroRSS源树导入到我的树中,并修改了RssParser类,以便保护RssParser.getDate()。然后,我使用自己的使用JodaTime的RssParser实用程序类添加了自己的RssParser.getDate()子类,该子类覆盖了DateParser

@Override
protected Date getDate(String dateString, int rssType)
{
     return DateParser.getDate(dateString, rssType);
}


HorroRSS的维护者将修改RssParser以接受自定义日期解析器的实现,因此将来无需修改供应商代码。到目前为止,我的修改只是一个权宜之计。

08-17 22:36