mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -17,6 +17,7 @@ import io.legado.app.constant.AppConst.channelIdReadAloud
|
||||
import io.legado.app.constant.AppConst.channelIdWeb
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.help.AppFreezeMonitor
|
||||
import io.legado.app.help.AppWebDav
|
||||
import io.legado.app.help.CrashHandler
|
||||
import io.legado.app.help.DefaultData
|
||||
@@ -70,6 +71,7 @@ class App : Application() {
|
||||
registerActivityLifecycleCallbacks(LifecycleHelp)
|
||||
defaultSharedPreferences.registerOnSharedPreferenceChangeListener(AppConfig)
|
||||
DefaultData.upVersion()
|
||||
AppFreezeMonitor.init()
|
||||
Coroutine.async {
|
||||
URL.setURLStreamHandlerFactory(ObsoleteUrlFactory(okHttpClient))
|
||||
launch { installGmsTlsProvider(appCtx) }
|
||||
|
||||
44
app/src/main/java/io/legado/app/help/AppFreezeMonitor.kt
Normal file
44
app/src/main/java/io/legado/app/help/AppFreezeMonitor.kt
Normal file
@@ -0,0 +1,44 @@
|
||||
package io.legado.app.help
|
||||
|
||||
import android.os.Handler
|
||||
import android.os.HandlerThread
|
||||
import android.os.SystemClock
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.utils.LogUtils
|
||||
|
||||
object AppFreezeMonitor {
|
||||
|
||||
private const val TAG = "AppFreezeMonitor"
|
||||
|
||||
val handler by lazy {
|
||||
Handler(HandlerThread("AppFreezeMonitor").apply { start() }.looper)
|
||||
}
|
||||
|
||||
fun init() {
|
||||
if (!AppConfig.recordLog) {
|
||||
return
|
||||
}
|
||||
|
||||
var previous = SystemClock.uptimeMillis()
|
||||
|
||||
val runnable = object : Runnable {
|
||||
override fun run() {
|
||||
val current = SystemClock.uptimeMillis()
|
||||
val elapsed = current - previous
|
||||
val extra = elapsed - 3000
|
||||
|
||||
if (extra > 100) {
|
||||
LogUtils.d(TAG, "检测到应用被系统冻结,时长:$extra 毫秒")
|
||||
}
|
||||
|
||||
previous = current
|
||||
|
||||
if (AppConfig.recordLog) {
|
||||
handler.postDelayed(this, 3000)
|
||||
}
|
||||
}
|
||||
}
|
||||
handler.postDelayed(runnable, 3000)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -38,6 +38,7 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
var themeMode = appCtx.getPrefString(PreferKey.themeMode, "0")
|
||||
var useDefaultCover = appCtx.getPrefBoolean(PreferKey.useDefaultCover, false)
|
||||
var optimizeRender = appCtx.getPrefBoolean(PreferKey.optimizeRender, false)
|
||||
var recordLog = appCtx.getPrefBoolean(PreferKey.recordLog)
|
||||
|
||||
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
|
||||
when (key) {
|
||||
@@ -89,6 +90,8 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
PreferKey.optimizeRender -> optimizeRender =
|
||||
appCtx.getPrefBoolean(PreferKey.optimizeRender, false)
|
||||
|
||||
PreferKey.recordLog -> recordLog = appCtx.getPrefBoolean(PreferKey.recordLog)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -456,8 +459,6 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
val webDavDeviceName get() = appCtx.getPrefString(PreferKey.webDavDeviceName, Build.MODEL)
|
||||
|
||||
val recordLog get() = appCtx.getPrefBoolean(PreferKey.recordLog)
|
||||
|
||||
val recordHeapDump get() = appCtx.getPrefBoolean(PreferKey.recordHeapDump, false)
|
||||
|
||||
val loadCoverOnlyWifi get() = appCtx.getPrefBoolean(PreferKey.loadCoverOnlyWifi, false)
|
||||
|
||||
@@ -15,6 +15,7 @@ import io.legado.app.R
|
||||
import io.legado.app.constant.EventBus
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.databinding.DialogEditTextBinding
|
||||
import io.legado.app.help.AppFreezeMonitor
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
@@ -176,6 +177,7 @@ class OtherConfigFragment : PreferenceFragment(),
|
||||
LogUtils.upLevel()
|
||||
LogUtils.logDeviceInfo()
|
||||
LiveEventBus.config().enableLogger(AppConfig.recordLog)
|
||||
AppFreezeMonitor.init()
|
||||
}
|
||||
|
||||
PreferKey.processText -> sharedPreferences?.let {
|
||||
|
||||
@@ -11,7 +11,6 @@ import io.legado.app.help.config.AppConfig
|
||||
import splitties.init.appCtx
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.logging.ConsoleHandler
|
||||
import java.util.logging.FileHandler
|
||||
import java.util.logging.Level
|
||||
import java.util.logging.LogRecord
|
||||
@@ -41,11 +40,10 @@ object LogUtils {
|
||||
}
|
||||
|
||||
val logger: Logger by lazy {
|
||||
Logger.getGlobal().apply {
|
||||
Logger.getLogger("Leagdo").apply {
|
||||
fileHandler?.let {
|
||||
addHandler(it)
|
||||
}
|
||||
addHandler(consoleHandler)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,22 +73,6 @@ object LogUtils {
|
||||
}.asynchronous()
|
||||
}
|
||||
|
||||
private val consoleHandler by lazy {
|
||||
ConsoleHandler().apply {
|
||||
formatter = object : java.util.logging.Formatter() {
|
||||
override fun format(record: LogRecord): String {
|
||||
// 设置文件输出格式
|
||||
return (getCurrentDateStr(TIME_PATTERN) + ": " + record.message + "\n")
|
||||
}
|
||||
}
|
||||
level = if (AppConfig.recordLog) {
|
||||
Level.INFO
|
||||
} else {
|
||||
Level.OFF
|
||||
}
|
||||
}.asynchronous()
|
||||
}
|
||||
|
||||
fun upLevel() {
|
||||
val level = if (AppConfig.recordLog) {
|
||||
Level.INFO
|
||||
@@ -98,7 +80,6 @@ object LogUtils {
|
||||
Level.OFF
|
||||
}
|
||||
fileHandler?.level = level
|
||||
consoleHandler.level = level
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user