package com.aiyou.utils.filecache;
import java.io.File;
import android.os.AsyncTask;
import android.os.SystemClock;
/**
* 清理文件的异步线程类
*
* @author sollian
*/
public class ClearCacheTask extends AsyncTask<Void, String, Integer> {
private String[] directory = new String[]{
FileManager.DIR_CAMERA,
FileManager.DIR_FILE, FileManager.DIR_IMG,
FileManager.DIR_LARGEIMG, FileManager.DIR_SNAPSHOT,
};
private ClearCacheListener listener;
public ClearCacheTask(ClearCacheListener listener) {
this.listener = listener;
}
@Override
protected void onPreExecute() {
if (listener != null) {
listener.onStartClear();
}
}
@Override
protected Integer doInBackground(Void... params) {
String strProgress;
String dirPath;
int fileCount = 0;
int nInterval;
for (String direc : directory) {
dirPath = FileManager.getDirectory(direc);
if (dirPath == null) {
continue;
}
File dir = new File(dirPath);
if (!dir.exists()) {
continue;
}
File[] files = dir.listFiles();
if (files == null || files.length <= 0) {
continue;
}
nInterval = 2000 / files.length;
if (nInterval > 400) {
nInterval = 400;
}
for (int j = 0; j < files.length; j++) {
strProgress = dirPath + ":\n" + j + "/" + (files.length - 1);
publishProgress(strProgress);
if (files[j].isFile() && files[j].delete()) {
fileCount++;
}
SystemClock.sleep(nInterval);
}
}
return fileCount;
}
@Override
protected void onProgressUpdate(String... values) {
if (listener != null) {
// 更新进度
listener.onProgressUpdate(values[0]);
}
}
@Override
protected void onPostExecute(Integer result) {
if (listener != null) {
listener.onEndClear(result);
}
}
public interface ClearCacheListener {
void onStartClear();
void onProgressUpdate(String progress);
void onEndClear(int fileCount);
}
}