From 92410714b2107321d012f7d0e422885e3697611e Mon Sep 17 00:00:00 2001 From: jhengazuki Date: Sun, 2 Nov 2025 23:04:57 +0800 Subject: [PATCH] Clean code --- .../leanback/java/com/fongmi/android/tv/Product.java | 2 -- .../android/tv/ui/activity/CollectActivity.java | 6 +++--- .../fongmi/android/tv/ui/activity/VideoActivity.java | 1 + app/src/main/java/com/fongmi/android/tv/App.java | 2 +- .../com/fongmi/android/tv/model/LiveViewModel.java | 12 ++++-------- .../model/{SearchCallable.java => SearchTask.java} | 4 ++-- .../com/fongmi/android/tv/model/SiteViewModel.java | 9 +++------ .../mobile/java/com/fongmi/android/tv/Product.java | 2 -- .../fongmi/android/tv/ui/activity/VideoActivity.java | 1 + .../android/tv/ui/fragment/CollectFragment.java | 4 ++-- 10 files changed, 17 insertions(+), 26 deletions(-) rename app/src/main/java/com/fongmi/android/tv/model/{SearchCallable.java => SearchTask.java} (92%) diff --git a/app/src/leanback/java/com/fongmi/android/tv/Product.java b/app/src/leanback/java/com/fongmi/android/tv/Product.java index 51e12cfc2..6c377d8cd 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/Product.java +++ b/app/src/leanback/java/com/fongmi/android/tv/Product.java @@ -5,8 +5,6 @@ import com.fongmi.android.tv.utils.ResUtil; public class Product { - public static final int THREAD_COUNT = 10; - public static int getDeviceType() { return 0; } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java index 7946ccd71..2a7eb108e 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java @@ -35,6 +35,7 @@ import com.google.gson.reflect.TypeToken; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class CollectActivity extends BaseActivity { @@ -125,12 +126,11 @@ public class CollectActivity extends BaseActivity { } private List getSites() { - List items = new ArrayList<>(); - for (Site site : VodConfig.get().getSites()) if (site.isSearchable()) items.add(site); - return items; + return VodConfig.get().getSites().stream().filter(Site::isSearchable).collect(Collectors.toList()); } private void search() { + mViewModel.stopSearch(); List sites = getSites(); if (sites.isEmpty()) return; mAdapter.add(Collect.all()); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index e34813bf4..821e4daf2 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -1176,6 +1176,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void startSearch(String keyword) { mQuickAdapter.clear(); + mViewModel.stopSearch(); List sites = new ArrayList<>(); for (Site site : VodConfig.get().getSites()) if (isPass(site)) sites.add(site); mViewModel.searchContent(sites, keyword, true); diff --git a/app/src/main/java/com/fongmi/android/tv/App.java b/app/src/main/java/com/fongmi/android/tv/App.java index 9f2791dd2..80c8e5b55 100644 --- a/app/src/main/java/com/fongmi/android/tv/App.java +++ b/app/src/main/java/com/fongmi/android/tv/App.java @@ -46,7 +46,7 @@ public class App extends Application { public App() { instance = this; - executor = Executors.newFixedThreadPool(Product.THREAD_COUNT); + executor = Executors.newFixedThreadPool(5); handler = HandlerCompat.createAsync(Looper.getMainLooper()); time = System.currentTimeMillis(); gson = new Gson(); diff --git a/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java index 4f4d8a10e..64dd2bc08 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java @@ -81,11 +81,7 @@ public class LiveViewModel extends ViewModel { } public void getXml(Live item) { - execute(TaskType.XML, () -> { - boolean result = false; - for (String url : item.getEpgXml()) if (parseXml(item, url)) result = true; - return result; - }); + execute(TaskType.XML, () -> item.getEpgXml().stream().anyMatch(url -> parseXml(item, url))); } private boolean parseXml(Live item, String url) { @@ -126,7 +122,7 @@ public class LiveViewModel extends ViewModel { private void setTimeZone(Live live) { try { TimeZone timeZone = live.getTimeZone().isEmpty() ? TimeZone.getDefault() : TimeZone.getTimeZone(live.getTimeZone()); - for (SimpleDateFormat format : formatTime) format.setTimeZone(timeZone); + formatTime.forEach(simpleDateFormat -> simpleDateFormat.setTimeZone(timeZone)); formatDate.setTimeZone(timeZone); } catch (Exception ignored) { } @@ -142,7 +138,7 @@ public class LiveViewModel extends ViewModel { private void execute(TaskType type, Callable callable) { Future oldFuture = futures.get(type); if (oldFuture != null && !oldFuture.isDone()) oldFuture.cancel(true); - final Future newFuture = App.submit(callable); + Future newFuture = App.submit(callable); futures.put(type, newFuture); executor.execute(() -> { try { @@ -169,7 +165,7 @@ public class LiveViewModel extends ViewModel { @Override protected void onCleared() { super.onCleared(); - for (Future future : futures.values()) if (future != null) future.cancel(true); + futures.values().forEach(future -> future.cancel(true)); if (executor != null) executor.shutdownNow(); } } \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/model/SearchCallable.java b/app/src/main/java/com/fongmi/android/tv/model/SearchTask.java similarity index 92% rename from app/src/main/java/com/fongmi/android/tv/model/SearchCallable.java rename to app/src/main/java/com/fongmi/android/tv/model/SearchTask.java index d17d0b0ca..1e5cdedf0 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SearchCallable.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SearchTask.java @@ -10,7 +10,7 @@ import com.github.catvod.utils.Trans; import java.util.concurrent.Callable; -public class SearchCallable implements Callable { +public class SearchTask implements Callable { private final SiteViewModel model; private final String keyword; @@ -18,7 +18,7 @@ public class SearchCallable implements Callable { private final String page; private final Site site; - public SearchCallable(SiteViewModel model, Site site, String keyword, boolean quick, String page) { + public SearchTask(SiteViewModel model, Site site, String keyword, boolean quick, String page) { this.keyword = Trans.t2s(keyword); this.model = model; this.quick = quick; 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 bd7f03d9f..c6ad1b029 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 @@ -213,14 +213,11 @@ public class SiteViewModel extends ViewModel { } public void searchContent(List sites, String keyword, boolean quick) { - stopSearch(); - for (Site site : sites) searchContent(site, keyword, quick, "1"); + //sites.forEach(site -> searchFuture.add(new SearchTask(this, site, keyword, quick, "1"))); } public void searchContent(Site site, String keyword, boolean quick, String page) { - SearchCallable callable = new SearchCallable(this, site, keyword, quick, page); - if (!page.equals("1")) execute(result, callable); - else searchFuture.add(App.submit(callable.run())); + execute(result, new SearchTask(this, site, keyword, quick, page)); } public void action(String key, String action) { @@ -277,7 +274,7 @@ public class SiteViewModel extends ViewModel { } public void stopSearch() { - for (Future f : searchFuture) f.cancel(true); + searchFuture.forEach(future -> future.cancel(true)); searchFuture.clear(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/Product.java b/app/src/mobile/java/com/fongmi/android/tv/Product.java index a2ebf2ca8..033e13039 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/Product.java +++ b/app/src/mobile/java/com/fongmi/android/tv/Product.java @@ -9,8 +9,6 @@ import com.fongmi.android.tv.utils.ResUtil; public class Product { - public static final int THREAD_COUNT = 20; - public static int getDeviceType() { return 1; } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 204541439..79b0a1278 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -1316,6 +1316,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void startSearch(String keyword) { mQuickAdapter.clear(); + mViewModel.stopSearch(); List sites = new ArrayList<>(); for (Site item : VodConfig.get().getSites()) if (isPass(item)) sites.add(item); mViewModel.searchContent(sites, keyword, true); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java index 9dd2e39f4..f9c1cf768 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java @@ -97,8 +97,7 @@ public class CollectFragment extends BaseFragment implements MenuProvider, Colle } private void setSites() { - sites = new ArrayList<>(); - for (Site site : VodConfig.get().getSites()) if (site.isSearchable()) sites.add(site); + sites = VodConfig.get().getSites().stream().filter(Site::isSearchable).collect(Collectors.toList()); } private void setWidth() { @@ -115,6 +114,7 @@ public class CollectFragment extends BaseFragment implements MenuProvider, Colle } private void search() { + mViewModel.stopSearch(); if (!sites.isEmpty()) mCollectAdapter.setItems(List.of(Collect.all()), () -> mViewModel.searchContent(sites, getKeyword(), false)); }