package jp.crwdev.app.util;
import jp.crwdev.app.interfaces.IImageFileInfo;
import jp.crwdev.app.interfaces.IImageFileInfoList;
public class ImageFileInfoAsyncTask {
public interface OnTaskObserver {
void onStart();
void onProcess(int index, int total, IImageFileInfo info);
void onFinish();
};
private boolean mCancelTask = false;
private OnTaskObserver mTask = null;
private IImageFileInfoList mList = null;
private Thread mThread = null;
public ImageFileInfoAsyncTask(IImageFileInfoList list, OnTaskObserver task){
mList = list;
mTask = task;
mThread = null;
}
public void start(){
if(mTask == null || mList == null){
return;
}
if(mThread == null){
mThread = new Thread(){
@Override
public void run(){
threadTask();
}
};
mThread.start();
}
}
public void stop(){
if(mThread != null){
mCancelTask = true;
mThread = null;
}
}
private void threadTask(){
mTask.onStart();
int size = mList.size();
for(int i=0; i<size; i++){
IImageFileInfo info = mList.get(i);
mTask.onProcess(i, size, info);
if(mCancelTask){
break;
}
}
mTask.onFinish();
}
}