From e7a6011d0095c780f5787bf905827b26c4531592 Mon Sep 17 00:00:00 2001 From: jhengazuki Date: Thu, 6 Nov 2025 14:00:07 +0800 Subject: [PATCH] Use app startup --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 10 +- .../main/java/com/fongmi/android/tv/App.java | 129 +++++++----------- .../java/com/fongmi/android/tv/Startup.java | 40 ++++++ .../android/tv/api/loader/PyLoader.java | 2 +- catvod/build.gradle | 1 + catvod/src/main/AndroidManifest.xml | 13 +- .../main/java/com/github/catvod/Startup.java | 25 ++++ chaquo/src/main/AndroidManifest.xml | 13 +- .../main/java/com/fongmi/chaquo/Loader.java | 14 +- .../main/java/com/fongmi/chaquo/Startup.java | 28 ++++ quickjs/src/main/AndroidManifest.xml | 13 +- .../java/com/fongmi/quickjs/Provider.java | 54 -------- .../main/java/com/fongmi/quickjs/Startup.java | 27 ++++ 14 files changed, 218 insertions(+), 153 deletions(-) create mode 100644 app/src/main/java/com/fongmi/android/tv/Startup.java create mode 100644 catvod/src/main/java/com/github/catvod/Startup.java create mode 100644 chaquo/src/main/java/com/fongmi/chaquo/Startup.java delete mode 100644 quickjs/src/main/java/com/fongmi/quickjs/Provider.java create mode 100644 quickjs/src/main/java/com/fongmi/quickjs/Startup.java diff --git a/app/build.gradle b/app/build.gradle index 3a9a6e126..1b6430824 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -92,7 +92,7 @@ dependencies { implementation project(':chaquo') implementation project(':quickjs') implementation 'androidx.appcompat:appcompat:1.7.1' - implementation 'androidx.core:core-splashscreen:1.0.1' + implementation 'androidx.core:core-splashscreen:1.2.0' implementation 'androidx.media:media:1.7.1' implementation 'androidx.palette:palette:1.0.0' implementation 'androidx.room:room-runtime:2.8.3' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9f6564368..000ba7586 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,9 +58,13 @@ + android:name="androidx.startup.InitializationProvider" + android:authorities="${applicationId}.androidx-startup" + android:exported="false"> + + { + + @NonNull + @Override + public Void create(@NonNull Context context) { + CaocConfig.Builder.create().trackActivities(true).backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT).errorActivity(CrashActivity.class).apply(); + Logger.addLogAdapter(new AndroidLogAdapter(PrettyFormatStrategy.newBuilder().methodCount(0).showThreadInfo(false).tag("TV").build())); + EventBus.builder().addIndex(new EventIndex()).installDefaultEventBus(); + OkHttp.dns().setDoh(Doh.objectFrom(Setting.getDoh())); + return null; + } + + @NonNull + @Override + public List>> dependencies() { + return Collections.emptyList(); + } +} diff --git a/app/src/main/java/com/fongmi/android/tv/api/loader/PyLoader.java b/app/src/main/java/com/fongmi/android/tv/api/loader/PyLoader.java index 2bb6314ef..e96a327b2 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/loader/PyLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/loader/PyLoader.java @@ -31,7 +31,7 @@ public class PyLoader { public Spider getSpider(String key, String api, String ext) { try { if (spiders.containsKey(key)) return spiders.get(key); - Spider spider = loader.spider(App.get(), api); + Spider spider = loader.spider(api); spider.init(App.get(), ext); spiders.put(key, spider); return spider; diff --git a/catvod/build.gradle b/catvod/build.gradle index da719fcd7..b61d2886a 100644 --- a/catvod/build.gradle +++ b/catvod/build.gradle @@ -21,6 +21,7 @@ android { dependencies { api 'androidx.annotation:annotation:1.9.1' api 'androidx.preference:preference:1.2.1' + api 'androidx.startup:startup-runtime:1.2.0' api 'com.github.thegrizzlylabs:sardine-android:0.9' api 'com.google.code.gson:gson:' + gsonVersion api 'com.google.zxing:core:3.5.3' diff --git a/catvod/src/main/AndroidManifest.xml b/catvod/src/main/AndroidManifest.xml index 568741e54..35b57b823 100644 --- a/catvod/src/main/AndroidManifest.xml +++ b/catvod/src/main/AndroidManifest.xml @@ -1,2 +1,13 @@ - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/catvod/src/main/java/com/github/catvod/Startup.java b/catvod/src/main/java/com/github/catvod/Startup.java new file mode 100644 index 000000000..85fb1b52f --- /dev/null +++ b/catvod/src/main/java/com/github/catvod/Startup.java @@ -0,0 +1,25 @@ +package com.github.catvod; + +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.startup.Initializer; + +import java.util.Collections; +import java.util.List; + +public class Startup implements Initializer { + + @NonNull + @Override + public Void create(@NonNull Context context) { + Init.set(context); + return null; + } + + @NonNull + @Override + public List>> dependencies() { + return Collections.emptyList(); + } +} diff --git a/chaquo/src/main/AndroidManifest.xml b/chaquo/src/main/AndroidManifest.xml index 568741e54..7cdc2a9b4 100644 --- a/chaquo/src/main/AndroidManifest.xml +++ b/chaquo/src/main/AndroidManifest.xml @@ -1,2 +1,13 @@ - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/chaquo/src/main/java/com/fongmi/chaquo/Loader.java b/chaquo/src/main/java/com/fongmi/chaquo/Loader.java index d3c461c8a..78974e989 100644 --- a/chaquo/src/main/java/com/fongmi/chaquo/Loader.java +++ b/chaquo/src/main/java/com/fongmi/chaquo/Loader.java @@ -1,27 +1,21 @@ package com.fongmi.chaquo; -import android.content.Context; - import androidx.annotation.Keep; import com.chaquo.python.PyObject; import com.chaquo.python.Python; -import com.chaquo.python.android.AndroidPlatform; import com.github.catvod.utils.Path; public class Loader { - private PyObject app; + private final PyObject app; - @Keep - private void init(Context context) { - if (!Python.isStarted()) Python.start(new AndroidPlatform(context)); - app = Python.getInstance().getModule("app"); + public Loader() { + this.app = Python.getInstance().getModule("app"); } @Keep - public Spider spider(Context context, String api) { - if (app == null) init(context); + public Spider spider(String api) { PyObject obj = app.callAttr("spider", Path.py().getAbsolutePath(), api); return new Spider(app, obj, api); } diff --git a/chaquo/src/main/java/com/fongmi/chaquo/Startup.java b/chaquo/src/main/java/com/fongmi/chaquo/Startup.java new file mode 100644 index 000000000..9fd6907ab --- /dev/null +++ b/chaquo/src/main/java/com/fongmi/chaquo/Startup.java @@ -0,0 +1,28 @@ +package com.fongmi.chaquo; + +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.startup.Initializer; + +import com.chaquo.python.Python; +import com.chaquo.python.android.AndroidPlatform; + +import java.util.Collections; +import java.util.List; + +public class Startup implements Initializer { + + @NonNull + @Override + public Void create(@NonNull Context context) { + Python.start(new AndroidPlatform(context)); + return null; + } + + @NonNull + @Override + public List>> dependencies() { + return Collections.emptyList(); + } +} diff --git a/quickjs/src/main/AndroidManifest.xml b/quickjs/src/main/AndroidManifest.xml index 568741e54..b20a76a01 100644 --- a/quickjs/src/main/AndroidManifest.xml +++ b/quickjs/src/main/AndroidManifest.xml @@ -1,2 +1,13 @@ - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/quickjs/src/main/java/com/fongmi/quickjs/Provider.java b/quickjs/src/main/java/com/fongmi/quickjs/Provider.java deleted file mode 100644 index cd04c8080..000000000 --- a/quickjs/src/main/java/com/fongmi/quickjs/Provider.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.fongmi.quickjs; - -import android.content.ContentProvider; -import android.content.ContentValues; -import android.database.Cursor; -import android.net.Uri; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.whl.quickjs.android.QuickJSLoader; - -public class Provider extends ContentProvider { - - static { - try { - QuickJSLoader.init(); - } catch (Throwable ignored) { - } - } - - @Override - public boolean onCreate() { - return true; - } - - @Nullable - @Override - public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) { - return null; - } - - @Nullable - @Override - public String getType(@NonNull Uri uri) { - return null; - } - - @Nullable - @Override - public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) { - return null; - } - - @Override - public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) { - return 0; - } - - @Override - public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) { - return 0; - } -} diff --git a/quickjs/src/main/java/com/fongmi/quickjs/Startup.java b/quickjs/src/main/java/com/fongmi/quickjs/Startup.java new file mode 100644 index 000000000..84f374b4c --- /dev/null +++ b/quickjs/src/main/java/com/fongmi/quickjs/Startup.java @@ -0,0 +1,27 @@ +package com.fongmi.quickjs; + +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.startup.Initializer; + +import com.whl.quickjs.android.QuickJSLoader; + +import java.util.Collections; +import java.util.List; + +public class Startup implements Initializer { + + @NonNull + @Override + public Void create(@NonNull Context context) { + QuickJSLoader.init(); + return null; + } + + @NonNull + @Override + public List>> dependencies() { + return Collections.emptyList(); + } +}