diff --git a/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java b/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java index b487483a9..a68868359 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java +++ b/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java @@ -8,14 +8,12 @@ import com.android.cast.dlna.dmr.DLNARendererService; import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; import com.fongmi.android.tv.api.LiveConfig; -import com.fongmi.android.tv.bean.Config; -import com.fongmi.android.tv.impl.Callback; public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { DLNARendererService.Companion.start(App.get(), R.drawable.ic_logo); - LiveConfig.load(Config.live(), new Callback()); + LiveConfig.get().init().load(); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 168393de9..9ee551b6f 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -157,7 +157,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen private void initConfig() { if (isLoading()) return; WallConfig.get().init(); - LiveConfig.get().init(); + LiveConfig.get().init().load(); ApiConfig.get().init().load(getCallback()); setLoading(true); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 50dc3ec5f..85015bd14 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -30,7 +30,6 @@ import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.api.LiveConfig; import com.fongmi.android.tv.bean.Channel; -import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.bean.Epg; import com.fongmi.android.tv.bean.Group; import com.fongmi.android.tv.bean.Keep; @@ -232,7 +231,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void checkLive() { if (isEmpty()) { - LiveConfig.load(Config.live(), getCallback()); + LiveConfig.get().init().load(getCallback()); } else { getLive(); } diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java index f670f4161..938222701 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java @@ -40,6 +40,7 @@ public class ApiConfig { private JarLoader jarLoader; private PyLoader pyLoader; private JsLoader jsLoader; + private boolean loadLive; private Config config; private Parse parse; private String wall; @@ -92,6 +93,7 @@ public class ApiConfig { this.jarLoader = new JarLoader(); this.pyLoader = new PyLoader(); this.jsLoader = new JsLoader(); + this.loadLive = false; return this; } @@ -113,6 +115,7 @@ public class ApiConfig { this.jarLoader.clear(); this.pyLoader.clear(); this.jsLoader.clear(); + this.loadLive = true; return this; } @@ -126,7 +129,6 @@ public class ApiConfig { } catch (Throwable e) { if (TextUtils.isEmpty(config.getUrl())) App.post(() -> callback.error("")); else loadCache(callback, e); - LiveConfig.get().load(); e.printStackTrace(); } } @@ -156,9 +158,9 @@ public class ApiConfig { private void parseConfig(JsonObject object, Callback callback) { try { initSite(object); - initLive(object); initParse(object); initOther(object); + if (loadLive && object.has("lives")) initLive(object); jarLoader.parseJar("", Json.safeString(object, "spider")); config.json(object.toString()).update(); App.post(callback::success); @@ -184,12 +186,9 @@ public class ApiConfig { } private void initLive(JsonObject object) { - Config temp = null; - boolean live = object.has("lives"); - boolean same = LiveConfig.get().isSame(config.getUrl()); - if (live) temp = Config.find(config, 1).update(); - if (live && same) LiveConfig.get().clear().config(temp).parse(object); - else LiveConfig.get().load(); + Config temp = Config.find(config, 1); + boolean sync = LiveConfig.get().needSync(config.getUrl()); + if (sync) LiveConfig.get().clear().config(temp).parse(object); } private void initParse(JsonObject object) { diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java index 3d4031a70..c4b52e925 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java @@ -27,7 +27,7 @@ public class LiveConfig { private List lives; private Config config; - private boolean same; + private boolean sync; private Live home; private static class Loader { @@ -72,14 +72,13 @@ public class LiveConfig { public LiveConfig init() { this.home = null; - this.config = Config.live(); - return this; + return config(Config.live()); } public LiveConfig config(Config config) { this.config = config; if (config.getUrl() == null) return this; - this.same = config.getUrl().equals(ApiConfig.getUrl()); + this.sync = config.getUrl().equals(ApiConfig.getUrl()); return this; } @@ -93,7 +92,7 @@ public class LiveConfig { if (isEmpty()) load(new Callback()); } - private void load(Callback callback) { + public void load(Callback callback) { new Thread(() -> loadConfig(callback)).start(); } @@ -207,8 +206,8 @@ public class LiveConfig { return new int[]{-1, -1}; } - public boolean isSame(String url) { - return same || TextUtils.isEmpty(config.getUrl()) || url.equals(config.getUrl()); + public boolean needSync(String url) { + return sync || TextUtils.isEmpty(config.getUrl()) || url.equals(config.getUrl()); } public List getLives() { diff --git a/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java b/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java index 9f7c65c4b..5da19f7d2 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java @@ -51,8 +51,7 @@ public class WallConfig { } public WallConfig init() { - this.config = Config.wall(); - return this; + return config(Config.wall()); } public WallConfig config(Config config) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index afe96d9ee..1e84fe6d3 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -31,7 +31,6 @@ import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.api.LiveConfig; import com.fongmi.android.tv.bean.Channel; -import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.bean.Epg; import com.fongmi.android.tv.bean.Group; import com.fongmi.android.tv.bean.Keep; @@ -256,7 +255,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List private void checkLive() { if (isEmpty()) { - LiveConfig.load(Config.live(), getCallback()); + LiveConfig.get().init().load(getCallback()); } else { getLive(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java index a27e3cc10..fd9ac0bd0 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java @@ -103,7 +103,7 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt private void initConfig() { WallConfig.get().init(); - LiveConfig.get().init(); + LiveConfig.get().init().load(); ApiConfig.get().init().load(getCallback()); }