AysncTask
のdoInBackground()
メソッド内に大きなファイルをダウンロードするサービスがあります。
data = new byte[8192];
output = new FileOutputStream(fileLoc);
connection = (HttpURLConnection) new URL(currUrl).openConnection();
input = new BufferedInputStream(connection.getInputStream());
while ((count = input.read(data)) != -1) {
output.write(data, 0, count);
}
これが実行されている間 (ファイルがダウンロードされている間) をスクロールするListView
と、少し途切れたり、非常に途切れたりすることがあります。
doInBackground()
ダウンロードサービス用の新しいプロセスを作成し、スレッドの優先度を変更し、while
ループ中に任意のミリ秒数だけ一時停止して、メモリ使用量を最適化しました。
ダウンロード中に UI が途切れないようにする方法がわかりません。ダウンロードが行われていない間、UI は正常に応答します...