fongmi
jhengazuki 1 month ago
parent 8b4bca7e92
commit 92410714b2
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/Product.java
  2. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java
  3. 1
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/App.java
  5. 12
      app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java
  6. 4
      app/src/main/java/com/fongmi/android/tv/model/SearchTask.java
  7. 9
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  8. 2
      app/src/mobile/java/com/fongmi/android/tv/Product.java
  9. 1
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  10. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.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;
}

@ -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<Site> getSites() {
List<Site> 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<Site> sites = getSites();
if (sites.isEmpty()) return;
mAdapter.add(Collect.all());

@ -1176,6 +1176,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void startSearch(String keyword) {
mQuickAdapter.clear();
mViewModel.stopSearch();
List<Site> sites = new ArrayList<>();
for (Site site : VodConfig.get().getSites()) if (isPass(site)) sites.add(site);
mViewModel.searchContent(sites, keyword, true);

@ -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();

@ -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 <T> void execute(TaskType type, Callable<T> callable) {
Future<?> oldFuture = futures.get(type);
if (oldFuture != null && !oldFuture.isDone()) oldFuture.cancel(true);
final Future<T> newFuture = App.submit(callable);
Future<T> 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();
}
}

@ -10,7 +10,7 @@ import com.github.catvod.utils.Trans;
import java.util.concurrent.Callable;
public class SearchCallable implements Callable<Result> {
public class SearchTask implements Callable<Result> {
private final SiteViewModel model;
private final String keyword;
@ -18,7 +18,7 @@ public class SearchCallable implements Callable<Result> {
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;

@ -213,14 +213,11 @@ public class SiteViewModel extends ViewModel {
}
public void searchContent(List<Site> 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();
}

@ -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;
}

@ -1316,6 +1316,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
private void startSearch(String keyword) {
mQuickAdapter.clear();
mViewModel.stopSearch();
List<Site> sites = new ArrayList<>();
for (Site item : VodConfig.get().getSites()) if (isPass(item)) sites.add(item);
mViewModel.searchContent(sites, keyword, true);

@ -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));
}

Loading…
Cancel
Save