}
すべてが機能しますが、一時停止を押してから再開しようとすると、画像をアップロードできますが、メッセージをブロードキャストしてアクティビティに送信できません。
}
すべてが機能しますが、一時停止を押してから再開しようとすると、画像をアップロードできますが、メッセージをブロードキャストしてアクティビティに送信できません。
Services, by default, are not in their own Thread. So pausing the service is as simple as calling Thread.sleep()
. However, assuming you are running a Thread in your Service, which I would do since you are uploading images, I would have a a flag in the while loop of the Thread's run method. This flag would be the IsServicePaused
boolean that would pause or break out of the running loop.
OPは彼の言うことを意味し、独自のスレッドで実行されるIntentServiceクラスを使用していると思います。その場合、サービスが実行している作業を一時停止する 1 つの方法は、一時停止するよう指示するインテントをサービスに送信することです。次に、一時停止が発生したかどうかを定期的にチェックするように作業を行うコードを変更する必要があります。
しかし、私は少し困惑しています。なぜサービスを一時停止したいのですか? ユーザーがアクティビティで行っていることとは非同期に、バックグラウンドで実行されています。ユーザーが画像の表示を一時停止しなければならないユースケースは何ですか? これを処理する 1 つの方法は、Activity からの画像のダウンロードを開始し、ユーザーがアプリまたは他のアプリで他の作業を行えるようにすることです。すべての画像がダウンロードされたら、通知を投稿し、それに PendingIntent を添付します。ユーザーが通知をクリックすると、制御がアプリに戻ります。これは、非同期作業でアプリのライフサイクルを実装するための最良のパターンだと思います。
Looper.loop() を呼び出して、メッセージを処理させます。