pull/586/head
FongMi 1 year ago
parent e64dcaeea8
commit 1c519111c3
  1. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java
  2. 2
      app/src/main/java/com/fongmi/android/tv/App.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/Constant.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/player/Source.java
  5. 7
      app/src/main/java/com/fongmi/android/tv/utils/PauseExecutor.java
  6. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java

@ -35,8 +35,6 @@ import com.fongmi.android.tv.utils.ResUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
public class CollectActivity extends BaseActivity {
@ -127,7 +125,7 @@ public class CollectActivity extends BaseActivity {
private void search() {
mAdapter.add(Collect.all());
mBinding.pager.getAdapter().notifyDataSetChanged();
mExecutor = new PauseExecutor(Constant.THREAD_POOL, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
mExecutor = new PauseExecutor(Constant.THREAD_POOL);
mBinding.result.setText(getString(R.string.collect_result, getKeyword()));
for (Site site : mSites) mExecutor.execute(() -> search(site));
}

@ -40,7 +40,7 @@ public class App extends Application {
public App() {
instance = this;
executor = Executors.newFixedThreadPool(Constant.THREAD_POOL * 2);
executor = Executors.newFixedThreadPool(Constant.THREAD_POOL);
handler = HandlerCompat.createAsync(Looper.getMainLooper());
gson = new Gson();
}

@ -26,5 +26,5 @@ public class Constant {
//同步超時時間
public static final int TIMEOUT_SYNC = 2 * 1000;
//搜尋線程數量
public static final int THREAD_POOL = 5;
public static final int THREAD_POOL = 10;
}

@ -68,7 +68,7 @@ public class Source {
public void parse(List<Flag> flags) throws Exception {
for (Flag flag : flags) {
ExecutorService executor = Executors.newFixedThreadPool(Constant.THREAD_POOL * 2);
ExecutorService executor = Executors.newFixedThreadPool(Constant.THREAD_POOL);
List<Callable<List<Episode>>> items = new ArrayList<>();
Iterator<Episode> iterator = flag.getEpisodes().iterator();
while (iterator.hasNext()) addCallable(iterator, items);

@ -1,6 +1,6 @@
package com.fongmi.android.tv.utils;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
@ -12,12 +12,13 @@ public class PauseExecutor extends ThreadPoolExecutor {
private final Condition condition;
private boolean isPaused;
public PauseExecutor(int corePoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {
super(corePoolSize, corePoolSize, keepAliveTime, unit, workQueue);
public PauseExecutor(int corePoolSize) {
super(corePoolSize, corePoolSize, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
pauseLock = new ReentrantLock();
condition = pauseLock.newCondition();
}
@Override
protected void beforeExecute(Thread t, Runnable r) {
super.beforeExecute(t, r);
pauseLock.lock();

@ -50,8 +50,6 @@ import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Response;
@ -191,7 +189,7 @@ public class CollectActivity extends BaseActivity implements CustomScroller.Call
mBinding.view.setVisibility(View.VISIBLE);
mBinding.result.setVisibility(View.VISIBLE);
if (mExecutor != null) mExecutor.shutdownNow();
mExecutor = new PauseExecutor(Constant.THREAD_POOL * 2, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
mExecutor = new PauseExecutor(Constant.THREAD_POOL * 2);
String keyword = mBinding.keyword.getText().toString().trim();
for (Site site : mSites) mExecutor.execute(() -> search(site, keyword));
App.post(() -> mRecordAdapter.add(keyword), 250);

Loading…
Cancel
Save