サーバーからファイルをダウンロードし、この操作中にローカル DB に解析して挿入しています。進行状況バーを使用して操作の進行状況を表示しています。ファイルが非常に大きいため、進行状況バーに ANR が表示されます。また、ダウンロードが完了した後、進行状況バーが更新されず、進行状況が 50% しか表示されません。この ANR を回避するにはどうすればよいですか? 以下のようにコードを添付しています...
@Override
protected void onPreExecute()
{
flag = false;
progressCount = 0;
ProgressDialog progressBar = DdownoadProgressBar(context,
progressCount);
progressBar.show();
}
@Override
protected Integer doInBackground(String... urls) {
checkNetworkConnection();
if (connectionFlag) {
downloadFile1();
progressCount = 1;
publishProgress(progressCount);
downloadFile2();
progressCount = 2;
publishProgress(progressCount);
downloadFile3();
progressCount = 3;
publishProgress(progressCount);
downloadFile4();
progressCount = 4;
publishProgress(progressCount);
downloadFile5();
progressCount = 5;
publishProgress(progressCount);
downloadFile6();
progressCount = 6;
publishProgress(progressCount);
downloadflag = true;
}
return null;
}
@Override
protected void onProgressUpdate(Integer... progress)
{
Log.v(TAG, "In progressUpdate...");
progressBar.setProgress(progressCount);
}
@Override
protected void onPostExecute(Integer progress) {
if (downloadflag) {
try {
Log.v(TAG, "Inside onPostExecute....");
parseFile1();
progressCount=7;
publishProgress(progressCount);
parseFile2();
progressCount=8;
publishProgress(progressCount);
parseFile3();
progressCount=9;
publishProgress(progressCount);
parseFile4();
progressCount=10;
publishProgress(progressCount);
parseFile5();
progressCount=11;
publishProgress(progressCount);
parseFile6();
progressCount=12;
publishProgress(progressCount);
progressBar.dismiss();
Toast.makeText(SynchronizeData.this,"Data is successfully downloaded from server.......", Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
}
} else {
progressBar.dismiss();
Toast.makeText(
getApplicationContext(),
"File is not downloaded....Error in network connection...........",Toast.LENGTH_LONG).show();
Log.v(TAG, "File is not downloaded...............");
}
}