AsyncTask を起動するサービスを実装したいと考えています。
AsyncTask onProgressUpdate() では、メイン スレッドで TableLayout を更新したいと考えています。
すべて問題ありませんが、1 つ疑問があります。
サービスは stopSelf() まで継続され、これが私が望むものです。
しかし、AsyncTask は TableLayout を更新しないことをどのようにして知るのでしょうか?
AsyncTask を起動するサービスを実装したいと考えています。
AsyncTask onProgressUpdate() では、メイン スレッドで TableLayout を更新したいと考えています。
すべて問題ありませんが、1 つ疑問があります。
サービスは stopSelf() まで継続され、これが私が望むものです。
しかし、AsyncTask は TableLayout を更新しないことをどのようにして知るのでしょうか?
OK、あなたの2番目の投稿を読んだとき、私は物事をよりよく理解しています。
ここでは、古典的な生産者/消費者問題があります。サービスのAsyncTaskは、コンシューマー(メインアクティビティ)が表示する必要のあるものを生成しています。解決策は、LinkedBlockingQueueを使用してダウンロードしたすべてのアイテムを保存することです。アクティビティには、LinkedBlockingQueueからポーリングする独自のAsyncTaskが必要です。基本的なアプローチは次のとおりです。
このサービスには、データをダウンロードするAsyncTaskがあります。各アイテムは無制限のLinkedBlockingQueueに保存されます。
アクティビティはonResumeからAsyncTaskを開始し、onPauseからキャンセルします。このタスクは、LinkedBlockingQueueをポーリングしてから、TableLayoutに各アイテムを表示します。