メソッドが終了すると、 an はIntentService
停止します。onHandleIntent()
これは、通常のサービスに対する利点の 1 つです。ライフサイクルを管理する必要はありません。
のAndroid ドキュメント ページからIntentService.onHandleIntent()
、
このメソッドは、処理要求を使用してワーカー スレッドで呼び出されます。一度に処理されるインテントは 1 つだけですが、処理は他のアプリケーション ロジックから独立して実行されるワーカー スレッドで行われます。そのため、このコードに時間がかかる場合、同じ IntentService への他のリクエストは保留されますが、それ以外は保留されません。すべてのリクエストが処理されると、IntentService 自体が停止するため、stopSelf() を呼び出さないでください。
アップロードの一時停止/再開に関しては、ノンブロッキング IO を使用する必要があります。IO のブロックを中断したり停止したりする方法はありません。あなたができる最善のことは、終了時に結果を破棄するように自分自身に指示する状態を設定することです。ノンブロッキング IO は少し複雑で、ここで説明できる範囲を超えています。これは、このトピックに関する合理的なチュートリアルの 1 つです。高レベルの API (AWS Android API など) を使用して S3 と対話する場合、その API はノンブロッキング IO をサポートする必要があります。
あなたの場合、アップロードごとにデータベースの状態を維持できます。インテント サービスで結果を取得したら、DB にクエリを実行して、ユーザーがアップロードをキャンセルしたかどうかを確認できます。
一時停止/再開をサポートしてファイルをダウンロードする堅牢な方法を探している場合は、DownloadManager
API を見ましたか?