diff --git a/app/src/main/java/com/fongmi/android/tv/model/SearchCallable.java b/app/src/main/java/com/fongmi/android/tv/model/SearchCallable.java index 064a2c8f4..e69ccbaa7 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SearchCallable.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SearchCallable.java @@ -26,6 +26,15 @@ public class SearchCallable implements Callable { this.site = site; } + public Runnable run() { + return () -> { + try { + model.search.postValue(call()); + } catch (Throwable ignored) { + } + }; + } + @Override public Result call() throws Exception { if (quick && !site.isQuickSearch()) return Result.empty(); diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index 8d23255ec..0323398a6 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -42,7 +42,7 @@ import okhttp3.Response; public class SiteViewModel extends ViewModel { - private final List> searchFutures; + private final List> searchFuture; private final ExecutorService executor; private Future future; @@ -58,7 +58,7 @@ public class SiteViewModel extends ViewModel { player = new MutableLiveData<>(); search = new MutableLiveData<>(); action = new MutableLiveData<>(); - searchFutures = new ArrayList<>(); + searchFuture = new ArrayList<>(); executor = Executors.newSingleThreadExecutor(); } @@ -214,14 +214,9 @@ public class SiteViewModel extends ViewModel { } public void searchContent(Site site, String keyword, boolean quick, String page) { - Callable callable = new SearchCallable(this, site, keyword, quick, page); + SearchCallable callable = new SearchCallable(this, site, keyword, quick, page); if (!page.equals("1")) execute(result, callable); - else searchFutures.add(App.submit(() -> { - try { - search.postValue(callable.call()); - } catch (Throwable ignored) { - } - })); + else searchFuture.add(App.submit(callable::run)); } public void action(String key, String action) { @@ -277,8 +272,8 @@ public class SiteViewModel extends ViewModel { } public void stopSearch() { - for (Future f : searchFutures) f.cancel(true); - searchFutures.clear(); + for (Future f : searchFuture) f.cancel(true); + searchFuture.clear(); } @Override