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 1d27f7bbb..f73b62f56 100644 --- a/app/src/main/java/com/fongmi/android/tv/App.java +++ b/app/src/main/java/com/fongmi/android/tv/App.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 Future submit(Callable task) { + return get().executor.submit(task); + } + public static void execute(Runnable runnable) { get().executor.execute(runnable); } 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 c556b03f2..4f4d8a10e 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 @@ -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 void execute(TaskType type, Callable callable) { Future oldFuture = futures.get(type); if (oldFuture != null && !oldFuture.isDone()) oldFuture.cancel(true); - final Future newFuture = executor.submit(callable); + final Future newFuture = App.submit(callable); futures.put(type, newFuture); executor.execute(() -> { try { 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 919ed3da7..dd4cfe12a 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 @@ -43,20 +43,21 @@ import okhttp3.Response; public class SiteViewModel extends ViewModel { private final ExecutorService executor; - public MutableLiveData episode; - public MutableLiveData result; - public MutableLiveData player; - public MutableLiveData search; - public MutableLiveData action; private Future future; + public final MutableLiveData episode; + public final MutableLiveData result; + public final MutableLiveData player; + public final MutableLiveData search; + public final MutableLiveData 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, Callable 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);