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.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
public class CollectActivity extends BaseActivity { public class CollectActivity extends BaseActivity {
@ -127,7 +125,7 @@ public class CollectActivity extends BaseActivity {
private void search() { private void search() {
mAdapter.add(Collect.all()); mAdapter.add(Collect.all());
mBinding.pager.getAdapter().notifyDataSetChanged(); 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())); mBinding.result.setText(getString(R.string.collect_result, getKeyword()));
for (Site site : mSites) mExecutor.execute(() -> search(site)); for (Site site : mSites) mExecutor.execute(() -> search(site));
} }

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

@ -26,5 +26,5 @@ public class Constant {
//同步超時時間 //同步超時時間
public static final int TIMEOUT_SYNC = 2 * 1000; 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 { public void parse(List<Flag> flags) throws Exception {
for (Flag flag : flags) { 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<>(); List<Callable<List<Episode>>> items = new ArrayList<>();
Iterator<Episode> iterator = flag.getEpisodes().iterator(); Iterator<Episode> iterator = flag.getEpisodes().iterator();
while (iterator.hasNext()) addCallable(iterator, items); while (iterator.hasNext()) addCallable(iterator, items);

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

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

Loading…
Cancel
Save