使用Koin依赖注入框架

This commit is contained in:
HapeLee
2025-11-23 15:35:11 +08:00
parent e9ccf3b700
commit 9b3b55a237
2 changed files with 44 additions and 1 deletions
+5 -1
View File
@@ -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)
@@ -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<AppDatabase> { appDb }
// 注册所有的 DAO 接口,通过 AppDatabase 实例获取
factory<BookDao> { get<AppDatabase>().bookDao }
factory<BookGroupDao> { get<AppDatabase>().bookGroupDao }
factory<BookSourceDao> { get<AppDatabase>().bookSourceDao }
factory<BookChapterDao> { get<AppDatabase>().bookChapterDao }
factory<ReplaceRuleDao> { get<AppDatabase>().replaceRuleDao }
factory<SearchBookDao> { get<AppDatabase>().searchBookDao }
factory<SearchKeywordDao> { get<AppDatabase>().searchKeywordDao }
factory<RssSourceDao> { get<AppDatabase>().rssSourceDao }
factory<BookmarkDao> { get<AppDatabase>().bookmarkDao }
factory<RssArticleDao> { get<AppDatabase>().rssArticleDao }
factory<RssStarDao> { get<AppDatabase>().rssStarDao }
factory<RssReadRecordDao> { get<AppDatabase>().rssReadRecordDao }
factory<CookieDao> { get<AppDatabase>().cookieDao }
factory<TxtTocRuleDao> { get<AppDatabase>().txtTocRuleDao }
factory<ReadRecordDao> { get<AppDatabase>().readRecordDao }
factory<HttpTTSDao> { get<AppDatabase>().httpTTSDao }
factory<CacheDao> { get<AppDatabase>().cacheDao }
factory<RuleSubDao> { get<AppDatabase>().ruleSubDao }
factory<DictRuleDao> { get<AppDatabase>().dictRuleDao }
factory<KeyboardAssistsDao> { get<AppDatabase>().keyboardAssistsDao }
factory<ServerDao> { get<AppDatabase>().serverDao }
}