From f1063f2354ea53ed51601b8c6718812cb8bcefbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E4=BF=8A?= <215613905@qq.com> Date: Mon, 24 Feb 2025 16:44:24 +0800 Subject: [PATCH] =?UTF-8?q?fix=E9=83=A8=E5=88=86=E7=88=AC=E8=99=AB?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=E6=92=AD=E6=94=BE=E5=99=A8=E5=B4=A9?= =?UTF-8?q?=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/github/tvbox/osc/util/OkGoHelper.java | 2 +- .../tvbox/osc/viewmodel/SourceViewModel.java | 51 ++++++++++++++----- gradle.properties | 4 +- 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java b/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java index 03cf19ba..96f8c5ee 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java +++ b/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java @@ -51,7 +51,7 @@ public class OkGoHelper { public static final long DEFAULT_MILLISECONDS = 6500; //默认的超时时间 // 内置doh json - public static final String dnsConfigJson = "[" + private static final String dnsConfigJson = "[" + "{\"name\": \"腾讯\", \"url\": \"https://doh.pub/dns-query\"}," + "{\"name\": \"阿里\", \"url\": \"https://dns.alidns.com/dns-query\"}," + "{\"name\": \"360\", \"url\": \"https://doh.360.cn/dns-query\"}" diff --git a/app/src/main/java/com/github/tvbox/osc/viewmodel/SourceViewModel.java b/app/src/main/java/com/github/tvbox/osc/viewmodel/SourceViewModel.java index e6dbc74a..1af5740e 100644 --- a/app/src/main/java/com/github/tvbox/osc/viewmodel/SourceViewModel.java +++ b/app/src/main/java/com/github/tvbox/osc/viewmodel/SourceViewModel.java @@ -715,20 +715,47 @@ public class SourceViewModel extends ViewModel { spThreadPool.execute(new Runnable() { @Override public void run() { - Spider sp = ApiConfig.get().getCSP(sourceBean); - if(TextUtils.isEmpty(url))return; - String json = sp.playerContent(playFlag, url, ApiConfig.get().getVipParseFlags()); + ExecutorService executor = Executors.newSingleThreadExecutor(); + Future future = executor.submit(new Callable() { + @Override + public String call() throws Exception { + Spider sp = ApiConfig.get().getCSP(sourceBean); + if (TextUtils.isEmpty(url)) return ""; + try { + return sp.playerContent(playFlag, url, ApiConfig.get().getVipParseFlags()); + } catch (Exception e) { + LOG.i("echo--getPlay--error: " + e.getMessage()); + return ""; + } + } + }); + try { - JSONObject result = new JSONObject(json); - result.put("key", url); - result.put("proKey", progressKey); - result.put("subtKey", subtitleKey); - if (!result.has("flag")) - result.put("flag", playFlag); - playResult.postValue(result); - } catch (Throwable th) { - th.printStackTrace(); + String json = future.get(10, TimeUnit.SECONDS); + LOG.i("echo--getPlay--" + json); + // 处理返回的 JSON + if (!TextUtils.isEmpty(json)) { + JSONObject result = new JSONObject(json); + result.put("key", url); + result.put("proKey", progressKey); + result.put("subtKey", subtitleKey); + if (!result.has("flag")) + result.put("flag", playFlag); + playResult.postValue(result); + } else { + playResult.postValue(null); + } + } catch (TimeoutException e) { + // 如果超时了,处理超时逻辑 + LOG.i("echo--getPlay--timeout"); + future.cancel(true); + playResult.postValue(null); + } catch (Exception e) { + // 捕获其他异常 + LOG.i("echo--getPlay--error: " + e.getMessage()); playResult.postValue(null); + } finally { + executor.shutdown(); } } }); diff --git a/gradle.properties b/gradle.properties index 23d2926c..1eafb091 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m +#org.gradle.jvmargs=-Xmx2048m # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects @@ -18,4 +18,4 @@ android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true IsDebug=true -#org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED +org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED