アプリケーションを開発しましたが、その目的の 1 つはファイルをサーバーにアップロードすることです。平均してファイルは非常に大きく、アップロードには多くの時間がかかるため、最後まで処理されるように、IO の重要な部分を IntentService に移動しました。すべてのアップロードの IntentService から、IO ジョブを実行する AsyncTask が開始されます。残念ながら、バックグラウンドでアップロードを行っている間、画面のスクロールが数回フリーズします。IntentService+AsyncTask の組み合わせで十分だと思いました...解決方法があれば教えていただければ幸いです..
1 に答える
1
IntentService を誤用している可能性があると思います。AsyncTask.execute(...)
から電話していると仮定しますIntentService.onHandleIntent(Intent)
。
IntentService は、非 UI スレッドで一度に 1 つずつバックグラウンド タスクを実行するために作成されました。これは、onHandleIntent(Intent)
がバックグラウンド スレッドから呼び出され、AsyncTask を作成してはならないことを意味します。さらに、onHandleIntent(Intent)
終了すると (AsyncTask を開始するだけの場合はすぐに終了します)、サービスはシャットダウンの候補になります。
これがあなたの質問に直接答えるものではないことは承知していますが、問題の原因を示している可能性があります。複数のリクエストを同時に処理できるようにする必要がある場合は、Service を拡張し、onStartCommand(...)
.
[編集] の適切な使用方法の詳細については、こちらをご覧IntentService
ください。
于 2012-07-16T22:25:32.447 に答える