fongmi
jhengazuki 1 month ago
parent 3bde71b945
commit 55ceb55e47
  1. 10
      app/src/main/java/com/fongmi/android/tv/App.java
  2. 10
      app/src/main/java/com/fongmi/android/tv/model/SearchTask.java
  3. 4
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  4. 30
      app/src/mobile/java/com/fongmi/android/tv/utils/ScanTask.java

@ -36,6 +36,7 @@ import cat.ereza.customactivityoncrash.config.CaocConfig;
public class App extends Application {
private final ExecutorService searchExecutor;
private final ExecutorService executor;
private final Handler handler;
private static App instance;
@ -46,10 +47,11 @@ public class App extends Application {
public App() {
instance = this;
gson = new Gson();
time = System.currentTimeMillis();
executor = Executors.newFixedThreadPool(5);
searchExecutor = Executors.newFixedThreadPool(20);
handler = HandlerCompat.createAsync(Looper.getMainLooper());
time = System.currentTimeMillis();
gson = new Gson();
}
public static App get() {
@ -76,6 +78,10 @@ public class App extends Application {
return get().executor.submit(task);
}
public static Future<?> submitSearch(Runnable task) {
return get().searchExecutor.submit(task);
}
public static void execute(Runnable runnable) {
get().executor.execute(runnable);
}

@ -18,7 +18,15 @@ public class SearchTask implements Callable<Result> {
private final String page;
private final Site site;
public SearchTask(SiteViewModel model, Site site, String keyword, boolean quick, String page) {
public static SearchTask create(SiteViewModel model, Site site, String keyword, boolean quick) {
return new SearchTask(model, site, keyword, quick, "1");
}
public static SearchTask create(SiteViewModel model, Site site, String keyword, boolean quick, String page) {
return new SearchTask(model, site, keyword, quick, page);
}
private SearchTask(SiteViewModel model, Site site, String keyword, boolean quick, String page) {
this.keyword = Trans.t2s(keyword);
this.model = model;
this.quick = quick;

@ -213,11 +213,11 @@ public class SiteViewModel extends ViewModel {
}
public void searchContent(List<Site> sites, String keyword, boolean quick) {
//sites.forEach(site -> searchFuture.add(new SearchTask(this, site, keyword, quick, "1")));
sites.forEach(site -> searchFuture.add(App.submitSearch(SearchTask.create(this, site, keyword, quick).run())));
}
public void searchContent(Site site, String keyword, boolean quick, String page) {
execute(result, new SearchTask(this, site, keyword, quick, page));
execute(result, SearchTask.create(this, site, keyword, quick, page));
}
public void action(String key, String action) {

@ -9,21 +9,20 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import okhttp3.OkHttpClient;
import okhttp3.Response;
public class ScanTask {
private final List<Future<?>> future;
private final OkHttpClient client;
private ExecutorService executor;
private Listener listener;
public ScanTask(Listener listener) {
this.client = OkHttp.client(1000);
this.future = new ArrayList<>();
this.listener = listener;
}
@ -36,29 +35,14 @@ public class ScanTask {
}
public void stop() {
if (executor != null) executor.shutdownNow();
future.forEach(f -> f.cancel(true));
OkHttp.cancel(client, "scan");
executor = null;
future.clear();
listener = null;
}
private void init() {
if (executor != null) executor.shutdownNow();
executor = Executors.newFixedThreadPool(20);
OkHttp.cancel(client, "scan");
}
private void run(List<String> items) {
try {
init();
getDevice(items);
} catch (Exception e) {
e.printStackTrace();
}
}
private void getDevice(List<String> urls) {
for (String url : urls) executor.execute(() -> findDevice(url));
private void run(List<String> urls) {
for (String url : urls) future.add(App.submitSearch(() -> findDevice(url)));
}
private List<String> getUrl() {

Loading…
Cancel
Save