コードを使用した場合、ダイアログにパーセントが表示されない
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
int total = msg.arg1;
mProgressDialog.setProgress(total);
if (total >= 100){
try {
mProgressThread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
mProgressThread.setState(ProgressThread.STATE_DONE);
}
}
};
とスレッドコードで
while ((count = input.read(data)) != -1) {
total += count;
Message msg = mHandler.obtainMessage();
msg.arg1 = total;
mHandler.sendMessage(msg);
output.write(data, 0, count);
}
どうしたの?total++を使用する場合; 代わりに合計+=カウント; スケールは19%に上昇しますが、100%には上昇しません。これは、ファイルがwhileループの100回の反復よりも速くダウンロードされるためです。合計+=カウントを使用する場合; 0と表示されますが、スケールは100%で、ファイルがダウンロードされます。