私は最初の Android アプリに取り組んでいます。これは、別の非常に人気のあるアプリのキャッシュ クリーナーです。アプリのキャッシュをチェックし、存在する場合はそれを削除する機能をようやく手に入れました。ただし、ファイルを削除するために設定した非同期タスクは、進行状況バーを正確に更新していないようです。私はプログラミング初心者なので、コードのほとんどは他のソースからのコピペです。
プログレスバーの計算に問題があると思われるブロックは次のとおりです。
@Override
protected Void doInBackground(Void... params) {
// Delete Cache !!
File dir = new File(Environment.getExternalStorageDirectory()
+ "/Android/Data/com.popularapp/Cache");
// Progress Bar
for (int i = 1; i < 100; i++) {
if (isCancelled()) {
break;
} else {
System.out.println(i);
publishProgress(i);
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i2 = 0; i2 < children.length; i2++) {
new File(dir, children[i2]).delete();
}
}
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressBar.setProgress(values[0]);
tvLoading.setText("Loading... " + values[0] + " %");
tvPer.setText(values[0] + " %");
}