diff --git a/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java b/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java index 0c2ccd39b..af9f8a89d 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java +++ b/app/src/main/java/com/fongmi/android/tv/player/danmaku/Loader.java @@ -11,13 +11,16 @@ import java.io.InputStream; import master.flame.danmaku.danmaku.loader.ILoader; import master.flame.danmaku.danmaku.loader.IllegalDataException; import master.flame.danmaku.danmaku.parser.android.AndroidFileSource; +import okhttp3.OkHttpClient; public class Loader implements ILoader { + private OkHttpClient client; private AndroidFileSource dataSource; public Loader(Danmaku item) { try { + client = OkHttp.client(Constant.TIMEOUT_DANMAKU); load(item.getUrl()); } catch (Exception e) { e.printStackTrace(); @@ -27,9 +30,9 @@ public class Loader implements ILoader { @Override public void load(String url) throws IllegalDataException { try { - OkHttp.cancel("danmaku"); + OkHttp.cancel(client, "danmaku"); if (url.startsWith("/")) url = "file:/" + url; - load(OkHttp.newCall(OkHttp.client(Constant.TIMEOUT_DANMAKU), UrlUtil.convert(url), "danmaku").execute().body().byteStream()); + load(OkHttp.newCall(client, UrlUtil.convert(url), "danmaku").execute().body().byteStream()); } catch (IOException e) { e.printStackTrace(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/utils/ScanTask.java b/app/src/mobile/java/com/fongmi/android/tv/utils/ScanTask.java index d6c8a9dd7..7f35dc83c 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/utils/ScanTask.java +++ b/app/src/mobile/java/com/fongmi/android/tv/utils/ScanTask.java @@ -41,13 +41,14 @@ public class ScanTask { public void stop() { if (executor != null) executor.shutdownNow(); + OkHttp.cancel(client, "scan"); executor = null; listener = null; } private void init() { if (executor != null) executor.shutdownNow(); - executor = Executors.newCachedThreadPool(); + executor = Executors.newFixedThreadPool(20); devices.clear(); } @@ -80,7 +81,7 @@ public class ScanTask { private void findDevice(CountDownLatch cd, String url) { if (url.contains(Server.get().getAddress())) return; - try (Response res = OkHttp.newCall(client, url.concat("/device")).execute()) { + try (Response res = OkHttp.newCall(client, url.concat("/device"), "scan").execute()) { Device device = Device.objectFrom(res.body().string()); if (device != null) devices.add(device.save()); } catch (Exception ignored) { diff --git a/catvod/src/main/java/com/github/catvod/net/OkHttp.java b/catvod/src/main/java/com/github/catvod/net/OkHttp.java index 4d479754c..510238f77 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkHttp.java +++ b/catvod/src/main/java/com/github/catvod/net/OkHttp.java @@ -175,12 +175,20 @@ public class OkHttp { } public static void cancel(String tag) { - for (Call call : client().dispatcher().queuedCalls()) if (tag.equals(call.request().tag())) call.cancel(); - for (Call call : client().dispatcher().runningCalls()) if (tag.equals(call.request().tag())) call.cancel(); + cancel(client(), tag); + } + + public static void cancel(OkHttpClient client, String tag) { + for (Call call : client.dispatcher().queuedCalls()) if (tag.equals(call.request().tag())) call.cancel(); + for (Call call : client.dispatcher().runningCalls()) if (tag.equals(call.request().tag())) call.cancel(); } public static void cancelAll() { - client().dispatcher().cancelAll(); + cancelAll(client()); + } + + public static void cancelAll(OkHttpClient client) { + client.dispatcher().cancelAll(); } public static FormBody toBody(ArrayMap params) {