diff --git a/app/src/main/java/com/github/catvod/crawler/JarLoader.java b/app/src/main/java/com/github/catvod/crawler/JarLoader.java index 83af5da1..5e40bf3b 100644 --- a/app/src/main/java/com/github/catvod/crawler/JarLoader.java +++ b/app/src/main/java/com/github/catvod/crawler/JarLoader.java @@ -48,16 +48,22 @@ public class JarLoader { * @param cache */ public boolean load(String cache) { - spiders.clear(); recentJarKey = "main"; + return loadClassLoader(cache, recentJarKey); + } + + public void clear() { + spiders.clear(); proxyMethods.clear(); classLoaders.clear(); - return loadClassLoader(cache, "main"); } private boolean loadClassLoader(String jar, String key) { - if (classLoaders.containsKey(key)) return true; final String TAG = "JarLoader"; + if (classLoaders.containsKey(key)){ + Log.i(TAG, "loadClassLoader jar缓存: " + key); + return true; + } final File jarFile = new File(jar); final AtomicBoolean success = new AtomicBoolean(false); DexClassLoader classLoader; @@ -223,6 +229,7 @@ public class JarLoader { private DexClassLoader loadJarInternal(String jar, String md5, String key) { if (classLoaders.containsKey(key)){ + Log.i("JarLoader", "loadJarInternal jar缓存: " + key); return classLoaders.get(key); } File cache = new File(App.getInstance().getFilesDir().getAbsolutePath() + "/" + key + ".jar"); @@ -260,10 +267,14 @@ public class JarLoader { } public Spider getSpider(String key, String cls, String ext, String jar) { + if (spiders.containsKey(key)) { + Log.i("JarLoader", "getSpider spider缓存: " + key); + return spiders.get(key); + } String clsKey = cls.replace("csp_", ""); String jarUrl = ""; String jarMd5 = ""; - String jarKey = ""; + String jarKey; if (jar.isEmpty()) { jarKey = "main"; } else { @@ -273,17 +284,9 @@ public class JarLoader { jarMd5 = urls.length > 1 ? urls[1].trim() : ""; } recentJarKey = jarKey; - if (spiders.containsKey(key)) - return spiders.get(key); - DexClassLoader classLoader = null; assert jarKey != null; - if (jarKey.equals("main")) - classLoader = classLoaders.get("main"); - else { - classLoader = loadJarInternal(jarUrl, jarMd5, jarKey); - } - if (classLoader == null) - return new SpiderNull(); + DexClassLoader classLoader = jarKey.equals("main")? classLoaders.get("main"):loadJarInternal(jarUrl, jarMd5, jarKey); + if (classLoader == null) return new SpiderNull(); try { Spider sp = (Spider) classLoader.loadClass("com.github.catvod.spider." + clsKey).newInstance(); sp.init(App.getInstance(), ext); diff --git a/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java b/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java index 81d393c2..78d7a352 100644 --- a/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java +++ b/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java @@ -72,23 +72,25 @@ public class ApiConfig { private String spider = null; public String wallpaper = ""; - private SourceBean emptyHome = new SourceBean(); + private final SourceBean emptyHome = new SourceBean(); - private JarLoader jarLoader = new JarLoader(); - private JsLoader jsLoader = new JsLoader(); - private Gson gson; + private final JarLoader jarLoader = new JarLoader(); + private final JsLoader jsLoader = new JsLoader(); + private final Gson gson; - private String userAgent = "okhttp/3.15"; + private final String userAgent = "okhttp/3.15"; - private String requestAccept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"; + private final String requestAccept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"; private String defaultLiveObjString="{\"lives\":[{\"name\":\"txt_m3u\",\"type\":0,\"url\":\"txt_m3u_url\"}]}"; private ApiConfig() { + jarLoader.clear(); sourceBeanList = new LinkedHashMap<>(); liveChannelGroupList = new ArrayList<>(); parseBeanList = new ArrayList<>(); searchSourceBeanList = new ArrayList<>(); gson = new Gson(); + Hawk.put(HawkConfig.LIVE_GROUP_LIST,new JsonArray()); loadDefaultConfig(); } @@ -795,7 +797,7 @@ public class ApiConfig { } url ="http://127.0.0.1:9978/proxy?do=live&type=txt&ext="+url; } - LOG.i("echo-url:"+url); + LOG.i("echo-live-proxy-url:"+url); }else { return; } diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java index 46104366..78bc697b 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java @@ -333,8 +333,8 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen FastClickCheckUtil.check(v); if (v.getId() == R.id.tvLive) { - if(Hawk.get(HawkConfig.LIVE_API_URL,Hawk.get(HawkConfig.API_URL,"")).isEmpty()){ - Toast.makeText(mContext, "直播配置未设置", Toast.LENGTH_SHORT).show(); + if(Hawk.get(HawkConfig.LIVE_GROUP_LIST,new JsonArray()).isEmpty()){ + Toast.makeText(mContext, "直播源为空", Toast.LENGTH_SHORT).show(); }else { jumpActivity(LivePlayActivity.class); } 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 4ba0086e..62462bd1 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 @@ -89,7 +89,7 @@ public class SourceViewModel extends ViewModel { public static final ExecutorService spThreadPool = Executors.newSingleThreadExecutor(); //homeContent缓存,最多存储5个sourceKey的AbsSortXml对象 - private static Map sortCache = new LinkedHashMap(5, 0.75f, true) { + private static final Map sortCache = new LinkedHashMap(5, 0.75f, true) { @Override protected boolean removeEldestEntry(Map.Entry eldest) { return size() > 5;