Skip to content

Commit

Permalink
fix: #293#issuecomment-1068807121
Browse files Browse the repository at this point in the history
  • Loading branch information
liyujiang-gzu committed Mar 16, 2022
1 parent 4621549 commit d56b38e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,12 @@ public void onFileLoaded(@NonNull File file) {
}
if (itemCount < 1) {
DialogLog.print("no files, or dir is empty");
fileListView.setVisibility(View.INVISIBLE);
emptyHintView.setVisibility(View.VISIBLE);
emptyHintView.setText(emptyHint);
} else {
DialogLog.print("files or dirs count: " + itemCount);
fileListView.setVisibility(View.VISIBLE);
emptyHintView.setVisibility(View.INVISIBLE);
}
pathListView.post(new Runnable() {
Expand Down Expand Up @@ -201,6 +203,7 @@ public final void refreshCurrent(File current) {
return;
}
loadingView.setVisibility(VISIBLE);
fileListView.setVisibility(View.INVISIBLE);
emptyHintView.setVisibility(View.INVISIBLE);
long millis = System.currentTimeMillis();
pathAdapter.updatePath(current);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
Expand All @@ -73,7 +73,7 @@ public class FileAdapter extends RecyclerView.Adapter<ViewHolder> {
private File currentFile = null;
private String[] allowExtensions = null;
private boolean loadAsync = true;
private final LinkedList<FutureTask<?>> futureTasks = new LinkedList<>();
private final ConcurrentLinkedQueue<FutureTask<?>> futureTasks = new ConcurrentLinkedQueue<>();
private boolean onlyListDir = false;
private boolean showHomeDir = true;
private boolean showUpDir = true;
Expand Down Expand Up @@ -293,22 +293,18 @@ public void loadData(final File dir) {
reallyRefresh(loadDataSync(dir));
return;
}
if (!futureTasks.isEmpty()) {
FutureTask<?> futureTask = futureTasks.getFirst();
if (futureTask != null && !futureTask.isDone()) {
futureTask.cancel(true);
}
FutureTask<?> lastTask = futureTasks.peek();
if (lastTask != null && !lastTask.isDone()) {
lastTask.cancel(true);
}
FutureTask<?> futureTask = new FutureTask<>(new Callable<Void>() {
FutureTask<?> newTask = new FutureTask<>(new Callable<Void>() {
@Override
public Void call() {
final List<FileEntity> temp = loadDataSync(dir);
if (!futureTasks.isEmpty()) {
FutureTask<?> futureTask = futureTasks.removeFirst();
if (futureTask != null && futureTask.isCancelled()) {
DialogLog.print("data load is canceled: " + currentFile);
return null;
}
FutureTask<?> task = futureTasks.poll();
if (task != null && task.isCancelled()) {
DialogLog.print("data load is canceled: " + currentFile);
return null;
}
UI_HANDLER.post(new Runnable() {
@Override
Expand All @@ -319,8 +315,8 @@ public void run() {
return null;
}
});
futureTasks.addLast(futureTask);
THREAD_POOL.execute(futureTask);
futureTasks.add(newTask);
THREAD_POOL.execute(newTask);
}

@SuppressLint("NotifyDataSetChanged")
Expand Down

0 comments on commit d56b38e

Please sign in to comment.