release
jhengazuki 6 months ago
parent 604edd24c1
commit 3a3af17fc7
  1. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java
  2. 14
      app/src/main/java/com/fongmi/android/tv/utils/PauseExecutor.java
  3. 6
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java

@ -124,12 +124,14 @@ public class CollectActivity extends BaseActivity {
}
private void search() {
List<Site> sites = getSites();
if (sites.isEmpty()) return;
mAdapter.add(Collect.all());
if (mExecutor != null) stop();
mBinding.pager.getAdapter().notifyDataSetChanged();
mExecutor = new PauseExecutor(10);
mExecutor = new PauseExecutor(10, sites.size());
mBinding.result.setText(getString(R.string.collect_result, getKeyword()));
for (Site site : getSites()) mExecutor.execute(() -> search(site));
for (Site site : sites) mExecutor.execute(() -> search(site));
}
private void search(Site site) {

@ -1,6 +1,7 @@
package com.fongmi.android.tv.utils;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
@ -12,8 +13,12 @@ public class PauseExecutor extends ThreadPoolExecutor {
private final Condition condition;
private boolean isPaused;
public PauseExecutor(int corePoolSize) {
super(corePoolSize, corePoolSize, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
public PauseExecutor(int corePoolSize, int queueCapacity) {
this(corePoolSize, queueCapacity, new ThreadPoolExecutor.AbortPolicy());
}
public PauseExecutor(int corePoolSize, int queueCapacity, RejectedExecutionHandler handler) {
super(corePoolSize, corePoolSize, 0, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(queueCapacity), handler);
pauseLock = new ReentrantLock();
condition = pauseLock.newCondition();
}
@ -49,5 +54,4 @@ public class PauseExecutor extends ThreadPoolExecutor {
pauseLock.unlock();
}
}
}
}

@ -116,10 +116,12 @@ public class CollectFragment extends BaseFragment implements MenuProvider, Colle
}
private void search() {
List<Site> sites = getSites();
if (sites.isEmpty()) return;
if (mExecutor != null) mExecutor.shutdownNow();
mExecutor = new PauseExecutor(20);
mExecutor = new PauseExecutor(20, sites.size());
mCollectAdapter.setItems(List.of(Collect.all()), () -> {
for (Site site : getSites()) mExecutor.execute(() -> search(site, getKeyword()));
for (Site site : sites) mExecutor.execute(() -> search(site, getKeyword()));
});
}

Loading…
Cancel
Save