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が読み込まれる前にアプリを強制終了する時間の半分の時間で、アプリを実行できなくなります。

タイムゾーン名が最初の呼び出しで1回だけロードされた場合、SimpleDateFormatそれは完全に受け入れられます。しかし、RSSフィードをロードするたびに、これらのログが数十個取得されます。キャッシュをオンにする方法などはありますか?

どんな助けでも大歓迎です。私はこれを理解できるまで基本的に水中で死んでいます。

更新:RssParser.getDate()メソッドを保護または公開するために、HorrorRSSプロジェクトに問題を送信しました。そうすれば、JodaTimeのようなものを使用する独自の実装を提供できるようになります。これでうまくいくと思います。何かご意見は?

4

1 に答える 1

1

HorroRSS ソース ツリーを自分のものにインポートし、保護さRssParserれるようにクラスを変更しましたRssParser.getDate()。次に、JodaTime を使用する独自のユーティリティ クラスを使用してRssParserオーバーライドする独自のサブクラスを追加しました。RssParser.getDate()DateParser

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

HorroRSS のメンテナーはRssParser、カスタム日付パーサーの実装を受け入れるように変更する予定であるため、将来的にはベンダー コードの変更は必要ありません。私の変更は、それまでの一時しのぎにすぎません。

于 2012-10-15T03:09:35.643 に答える