1

非常に頻繁に JSON Web サービスを使用する必要があります (トップ 5.10 秒ごと)。

テスト目的で、ボタンを押すたびに実行される AsyncTask に Web サービス呼び出しを実装しました。

ハンドラー、タイマー、または AlarmManager を使用する必要がありますか?

AsyncTask は独自のスレッドを作成するため、少し混乱していますが、これらのメソッドのいずれかが別のスレッドを作成し、別のスレッドを作成するスレッドを作成することはありませんか?

AsyncTask を使用して実装しました。これは、Web サービスの呼び出しに問題があるたびにアプリケーションがハングする余裕がないためです。したがって、最初の呼び出しが失敗した場合、2 番目の呼び出しが成功した場合、問題はなく、フェッチしているデータはタスクの 2 回目の実行時に表示されます。

(GCM は解決策になる可能性がありますが、今は通知の代わりにポーリングを使用する必要があります..)

前もって感謝します

4

3 に答える 3

1

Handler.postDelay(Runnable r,long delayMillis)を使用し、必要な遅延の後にプロセスを再開することをお勧めします。

于 2013-03-19T16:13:50.137 に答える
1

ハンドラーは新しいスレッドを作成せず、UI スレッドで発生します。そのため、HTTP リクエストを実行することはできません。

実際には、ユースケースに AsyncTasks をお勧めしません。リクエストが順不同で終了することがあります。また、実行している OS のバージョンによっては、並行して実行される場合とされない場合があります。

あなたへの私の提案は、スレッドを使用することです。それらは Android に存在し、アクティビティがフォアグラウンドにあるときに何かを継続的に実行したい場合に推奨されるオフロード方法であり、N 個のタスクではなく 1 つのことだけを気にする必要があります。(フォアグラウンドでなくてもこれを実行したい場合は、サービスが必要です)。

于 2013-03-19T16:13:57.543 に答える
0

ここから素晴らしいチュートリアルを見つけました

https://www.thepolyglotdeveloper.com/2014/10/use-broadcast-receiver-background-services-android/

サービスは 30 分ごとに定期的にバックグラウンドで実行されます。要件に基づいて変更します。

お役に立てますように。

于 2015-04-13T11:55:36.117 に答える