This commit is contained in:
Horis
2025-04-28 15:28:37 +08:00
parent 65995bcedd
commit f3aad3c4af
3 changed files with 26 additions and 24 deletions
+9 -8
View File
@@ -28,6 +28,7 @@ import io.legado.app.help.RuleBigDataHelp
import io.legado.app.help.book.BookHelp import io.legado.app.help.book.BookHelp
import io.legado.app.help.config.AppConfig import io.legado.app.help.config.AppConfig
import io.legado.app.help.config.ThemeConfig.applyDayNight import io.legado.app.help.config.ThemeConfig.applyDayNight
import io.legado.app.help.config.ThemeConfig.initNightMode
import io.legado.app.help.coroutine.Coroutine import io.legado.app.help.coroutine.Coroutine
import io.legado.app.help.http.Cronet import io.legado.app.help.http.Cronet
import io.legado.app.help.http.ObsoleteUrlFactory import io.legado.app.help.http.ObsoleteUrlFactory
@@ -55,12 +56,17 @@ class App : Application() {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
CrashHandler(this) CrashHandler(this)
LogUtils.init(this)
LogUtils.d("App", "onCreate")
if (isDebuggable) { if (isDebuggable) {
ThreadUtils.setThreadAssertsDisabledForTesting(true) ThreadUtils.setThreadAssertsDisabledForTesting(true)
} }
oldConfig = Configuration(resources.configuration) oldConfig = Configuration(resources.configuration)
initNightMode()
registerActivityLifecycleCallbacks(LifecycleHelp)
defaultSharedPreferences.registerOnSharedPreferenceChangeListener(AppConfig)
Coroutine.async {
LogUtils.init(this@App)
LogUtils.d("App", "onCreate")
LogUtils.logDeviceInfo()
//预下载Cronet so //预下载Cronet so
Cronet.preDownload() Cronet.preDownload()
createNotificationChannels() createNotificationChannels()
@@ -69,13 +75,8 @@ class App : Application() {
.autoClear(false) .autoClear(false)
.enableLogger(BuildConfig.DEBUG || AppConfig.recordLog) .enableLogger(BuildConfig.DEBUG || AppConfig.recordLog)
.setLogger(EventLogger()) .setLogger(EventLogger())
applyDayNight(this)
registerActivityLifecycleCallbacks(LifecycleHelp)
defaultSharedPreferences.registerOnSharedPreferenceChangeListener(AppConfig)
DefaultData.upVersion() DefaultData.upVersion()
AppFreezeMonitor.init(this) AppFreezeMonitor.init(this@App)
Coroutine.async {
LogUtils.logDeviceInfo()
URL.setURLStreamHandlerFactory(ObsoleteUrlFactory(okHttpClient)) URL.setURLStreamHandlerFactory(ObsoleteUrlFactory(okHttpClient))
launch { installGmsTlsProvider(appCtx) } launch { installGmsTlsProvider(appCtx) }
RhinoScriptEngine RhinoScriptEngine
@@ -57,7 +57,7 @@ object ThemeConfig {
postEvent(EventBus.RECREATE, "") postEvent(EventBus.RECREATE, "")
} }
private fun initNightMode() { fun initNightMode() {
val targetMode = val targetMode =
if (AppConfig.isNightTheme) { if (AppConfig.isNightTheme) {
AppCompatDelegate.MODE_NIGHT_YES AppCompatDelegate.MODE_NIGHT_YES
@@ -10,6 +10,7 @@ import io.legado.app.BuildConfig
import io.legado.app.constant.AppConst import io.legado.app.constant.AppConst
import io.legado.app.constant.AppLog import io.legado.app.constant.AppLog
import io.legado.app.help.config.AppConfig import io.legado.app.help.config.AppConfig
import io.legado.app.help.globalExecutor
import splitties.init.appCtx import splitties.init.appCtx
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
@@ -26,7 +27,9 @@ object LogUtils {
val logTimeFormat by lazy { SimpleDateFormat(TIME_PATTERN) } val logTimeFormat by lazy { SimpleDateFormat(TIME_PATTERN) }
fun init(context: Context) { fun init(context: Context) {
fileHandler = createFileHandler(context) fileHandler = createFileHandler(context)?.also {
logger.addHandler(it)
}
} }
@JvmStatic @JvmStatic
@@ -46,11 +49,7 @@ object LogUtils {
} }
val logger: Logger by lazy { val logger: Logger by lazy {
Logger.getLogger("Legado").apply { Logger.getLogger("Legado")
fileHandler?.let {
addHandler(it)
}
}
} }
private var fileHandler: FileHandler? = null private var fileHandler: FileHandler? = null
@@ -59,12 +58,14 @@ object LogUtils {
try { try {
val root = context.externalCacheDir ?: return null val root = context.externalCacheDir ?: return null
val logFolder = FileUtils.createFolderIfNotExist(root, "logs") val logFolder = FileUtils.createFolderIfNotExist(root, "logs")
globalExecutor.execute {
val expiredTime = System.currentTimeMillis() - 7.days.inWholeMilliseconds val expiredTime = System.currentTimeMillis() - 7.days.inWholeMilliseconds
logFolder.listFiles()?.forEach { logFolder.listFiles()?.forEach {
if (it.lastModified() < expiredTime || it.name.endsWith(".lck")) { if (it.lastModified() < expiredTime || it.name.endsWith(".lck")) {
it.delete() it.delete()
} }
} }
}
val date = getCurrentDateStr(TIME_PATTERN) val date = getCurrentDateStr(TIME_PATTERN)
val logPath = FileUtils.getPath(root = logFolder, "appLog-$date.txt") val logPath = FileUtils.getPath(root = logFolder, "appLog-$date.txt")
return AsyncFileHandler(logPath).apply { return AsyncFileHandler(logPath).apply {