1

我正在编写的应用程序使用HorrorRSS 库加载 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.

我意识到这个问题SimpleDateFormat中描述的类存在问题,看起来RssParser.getDate() 函数使用它从 RSS 提要中提取日期

这些语句似乎在我加载提要后立即发生,即:

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

我可以理解为什么他们会在第一次调用SimpleDateFormat. 但是有谁知道为什么这些语句被一遍又一遍地记录下来,以及如何防止它们?他们使我的应用程序无法运行,因为 Android 系统认为它过于占用资源并在加载 UI 之前将其杀死。

如果时区名称仅在第一次调用时加载一次,SimpleDateFormat那将是完全可以接受的。但是每次我加载一个 RSS 提要时,我都会得到几十个这样的日志。有没有办法打开缓存之类的?

任何帮助将不胜感激。在我弄清楚这一点之前,我基本上已经死在水中了。

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

4

1 回答 1

1

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

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

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

于 2012-10-15T03:09:35.643 回答