diff --git a/app/src/main/java/io/legado/app/App.kt b/app/src/main/java/io/legado/app/App.kt index b7814e36e..4d63d2853 100644 --- a/app/src/main/java/io/legado/app/App.kt +++ b/app/src/main/java/io/legado/app/App.kt @@ -32,6 +32,7 @@ import io.legado.app.data.entities.rule.BookInfoRule import io.legado.app.data.entities.rule.ContentRule import io.legado.app.data.entities.rule.ExploreRule import io.legado.app.data.entities.rule.SearchRule +import io.legado.app.di.appDatabaseModule import io.legado.app.help.AppFreezeMonitor import io.legado.app.help.AppWebDav import io.legado.app.help.CrashHandler @@ -60,6 +61,7 @@ import io.legado.app.utils.getPrefString import io.legado.app.utils.isDebuggable import kotlinx.coroutines.launch import org.chromium.base.ThreadUtils +import org.koin.core.context.GlobalContext.startKoin import splitties.init.appCtx import splitties.systemservices.notificationManager import java.io.File @@ -72,7 +74,9 @@ class App : Application() { private lateinit var oldConfig: Configuration override fun onCreate() { - + startKoin { + modules(appDatabaseModule) + } if (getPrefString("app_theme", "0") == "12") { if (AppConfig.customMode == "accent") setTheme(R.style.ThemeOverlay_WhiteBackground) diff --git a/app/src/main/java/io/legado/app/di/appDatabaseModule.kt b/app/src/main/java/io/legado/app/di/appDatabaseModule.kt new file mode 100644 index 000000000..be1038b47 --- /dev/null +++ b/app/src/main/java/io/legado/app/di/appDatabaseModule.kt @@ -0,0 +1,39 @@ +package io.legado.app.di + +import io.legado.app.data.AppDatabase +import io.legado.app.data.appDb +import io.legado.app.data.dao.* +import org.koin.dsl.module + +/** + * 应用程序的数据库和 DAO 模块 + */ +val appDatabaseModule = module { + + // 注册 AppDatabase 实例 + // 使用 lazy 属性 appDb,该属性在 AppDatabase.kt 中定义并已初始化 + single { appDb } + + // 注册所有的 DAO 接口,通过 AppDatabase 实例获取 + factory { get().bookDao } + factory { get().bookGroupDao } + factory { get().bookSourceDao } + factory { get().bookChapterDao } + factory { get().replaceRuleDao } + factory { get().searchBookDao } + factory { get().searchKeywordDao } + factory { get().rssSourceDao } + factory { get().bookmarkDao } + factory { get().rssArticleDao } + factory { get().rssStarDao } + factory { get().rssReadRecordDao } + factory { get().cookieDao } + factory { get().txtTocRuleDao } + factory { get().readRecordDao } + factory { get().httpTTSDao } + factory { get().cacheDao } + factory { get().ruleSubDao } + factory { get().dictRuleDao } + factory { get().keyboardAssistsDao } + factory { get().serverDao } +} \ No newline at end of file