ダウンロードボタンのあるアクティビティがあります。それをクリックすると、サービスが開始されます。サービスは通知を作成し、通知バーに投稿します。通知の詳細を表示すると、ダウンロード ステータスを示す進行状況バーが表示されます。
サービスがメイン スレッドで実行されることを知らなかったので、ワーカー スレッドを単独で作成するインテントサービスを使用するように提案されました。SO すべて問題なく、ダウンロード中に GUI がフリーズしません。
問題が 1 つあります。インテントサービスを使用するには、メソッド onHandleIntent 内にダウンロード コードと通知部分を実装する必要がありました。今、インテントサービスには、インテントを一度に管理する一種のキューがあることがわかりました。SOアクティビティからダウンロードボタンを2回クリックすると、新しい通知が作成され、ダウンロードが開始され、終了するとonHandleIntentが再び入力され、2番目の通知が作成され、2番目のダウンロードが開始されます。私にとっては、ファイルを一緒にダウンロードするのではなく、連続してダウンロードしても問題ありませんが、少なくともダウンロードボタンを2回押すと、2つのダウンロードが待っているという通知がアップロードされることを望みます。インテントサービスがコードを1回と2回実行するため、それを行うことができません........修正する方法はありますか?
手動でキューを処理する方法はありますか....別のインテントを取得した場合は、これを行います........通知を更新し、最初のダウンロードを続行します... .
もう 1 つの質問ですが、別のスレッドで動作していることを考慮してインテント サービスで GUI を変更できますか、それともハンドラーを使用してアクティビティにメッセージを送り返す必要がありますか?
そして最後に、onCreated メソッドの直後または onHandleIntent 内でスレッドが作成されたのはどこですか?