6

ユーザーがビデオを Amazon S3 にアップロードできるという要件があります。これは、Amazon SDK の Java 高レベル API を使用して実現しました。アップロード プロセス中にユーザーがホーム ボタンをクリックした場合、アップロードはバックグラウンドで続行する必要があります。

より良いアプローチは何でしょうか:?

*1 AsyncTask の使用: AsyncTask を使用してみましたが、問題なく動作します。ただし、アップロード プロセスがバックグラウンドで長時間継続すると、OS はアプリを強制終了してメモリを解放します。この状況を処理して、アプリにアップロード プロセスを完了させる方法はありますか。

*2 Service の使用: Service + ui 通知を使用するように勧められました。私にとってはうまく機能するので、AsyncTaskを使用したい気がします。AsyncTask よりもサービスを使用する利点はありますか。

4

1 に答える 1

10

ほとんどの場合、AsyncTask は UI、それを開始したアクティビティなどに結合されます。これらは、タスクが完了するまでメモリに残ります。

あなたのこのアップロード シナリオは、IntentServiceによる実装を求めています。これにより、アップロードが特定のアクティビティから切り離され、Android のライフサイクルに関してアプリが Android の良き市民となります。

サービスから定期的に更新される通知を作成してアップロードのステータスを表示し、ユーザーがステータス バーからアップロードをキャンセルできるようになりました。

于 2012-12-04T15:22:00.300 に答える