0

最大の優先度でスレッドを実行するブロードキャストレシーバーを毎分開始するアラームマネージャーがあります。そのスレッドでは、Twitter4j.getUserTimeline(page) を使用して、消防署で使用している Twitter アカウント (呼び出し情報) から最新の 60 個のツイートを取得します。私の問題は、getUserTimeline で時々かなりの遅延に気付いたことです。多くの場合、getUserTimeline にかかる時間は 4 秒以下ですが、信号が良好な場所や Wi-Fi を使用している場合でも、数分かかる場合もあります。メイン アプリ/UI で twitter4j.getUserTimeline を呼び出す同じコードを、最大 3 秒の遅延で使用します。

なぜこれが起こるのか、またはどのように修正できるのか、誰にも分かりますか?

4

1 に答える 1

0

毎秒約 4 秒かかるプロセスを起動している場合、おそらくいつでも 4 つ以上のスレッドが実行され、すべて同じことを実行します。これらのプロセス間で何らかの干渉が発生していますか?つまり、スレッドのデッドロックですか? Twitter4j.getUserTimeline 関数がスレッド セーフであることが保証されていない場合は、バックグラウンド サービスを起動して (Android が強制終了しないようにフォアグラウンドで実行するように設定します)、ループで実行して、継続的に呼び出す方がよい場合があります。 getUserTimeline 関数。その後、重大なイベントが検出されたときにアクティビティを開始するようにトリガーできます。

于 2012-07-31T00:49:11.547 に答える