pull/605/head
jhengazuki 5 months ago
parent f791ce1d7f
commit 179f693de8
  1. 6
      app/src/main/java/com/fongmi/android/tv/App.java
  2. 3
      app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java
  3. 15
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java

@ -27,8 +27,10 @@ import com.orhanobut.logger.PrettyFormatStrategy;
import org.greenrobot.eventbus.EventBus;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import cat.ereza.customactivityoncrash.config.CaocConfig;
@ -66,6 +68,10 @@ public class App extends Application {
return get().activity;
}
public static <T> Future<T> submit(Callable<T> task) {
return get().executor.submit(task);
}
public static void execute(Runnable runnable) {
get().executor.execute(runnable);
}

@ -3,6 +3,7 @@ package com.fongmi.android.tv.model;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.api.EpgParser;
@ -141,7 +142,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 = executor.submit(callable);
final Future<T> newFuture = App.submit(callable);
futures.put(type, newFuture);
executor.execute(() -> {
try {

@ -43,20 +43,21 @@ import okhttp3.Response;
public class SiteViewModel extends ViewModel {
private final ExecutorService executor;
public MutableLiveData<Episode> episode;
public MutableLiveData<Result> result;
public MutableLiveData<Result> player;
public MutableLiveData<Result> search;
public MutableLiveData<Result> action;
private Future<Result> future;
public final MutableLiveData<Episode> episode;
public final MutableLiveData<Result> result;
public final MutableLiveData<Result> player;
public final MutableLiveData<Result> search;
public final MutableLiveData<Result> action;
public SiteViewModel() {
executor = Executors.newFixedThreadPool(2);
episode = new MutableLiveData<>();
result = new MutableLiveData<>();
player = new MutableLiveData<>();
search = new MutableLiveData<>();
action = new MutableLiveData<>();
executor = Executors.newSingleThreadExecutor();
}
public SiteViewModel init() {
@ -287,7 +288,7 @@ public class SiteViewModel extends ViewModel {
private void execute(MutableLiveData<Result> result, Callable<Result> callable) {
if (future != null && !future.isDone()) future.cancel(true);
future = executor.submit(callable);
future = App.submit(callable);
executor.execute(() -> {
try {
Result taskResult = future.get(Constant.TIMEOUT_VOD, TimeUnit.MILLISECONDS);

Loading…
Cancel
Save