Преглед изворни кода

perf: 冷却判断挪到onResume以减少传感器注册 (#1633)

fansan пре 4 месеци
родитељ
комит
7d52eea5d0

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/read/ReadBookRouteScreen.kt

@@ -249,7 +249,7 @@ fun ReadBookRouteScreen(
 
 
         val observer = LifecycleEventObserver { _, event ->
         val observer = LifecycleEventObserver { _, event ->
             if (event == Lifecycle.Event.ON_RESUME) {
             if (event == Lifecycle.Event.ON_RESUME) {
-                if (!ReadConfig.autoSuggestDayNight) return@LifecycleEventObserver
+                if (!ReadConfig.autoSuggestDayNight || viewModel.isDayNightSwitchCoolingDown()) return@LifecycleEventObserver
                 if (lightSensor != null) {
                 if (lightSensor != null) {
                     listener = object : SensorEventListener {
                     listener = object : SensorEventListener {
                         override fun onSensorChanged(sensorEvent: SensorEvent?) {
                         override fun onSensorChanged(sensorEvent: SensorEvent?) {

+ 5 - 3
app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt

@@ -4023,6 +4023,10 @@ class ReadBookViewModel(
     private var lastSwitchDayNightReminderTime: Long = 0L
     private var lastSwitchDayNightReminderTime: Long = 0L
     private val reminderQueue = ArrayDeque<ReminderUiState>()
     private val reminderQueue = ArrayDeque<ReminderUiState>()
 
 
+    fun isDayNightSwitchCoolingDown(): Boolean {
+        return System.currentTimeMillis() - lastSwitchDayNightReminderTime < REMINDER_COOLDOWN_MS
+    }
+
     private fun showReminder(reminder: ReminderUiState) {
     private fun showReminder(reminder: ReminderUiState) {
         if (_uiState.value.activeReminder == null && reminderQueue.isEmpty()) {
         if (_uiState.value.activeReminder == null && reminderQueue.isEmpty()) {
             _uiState.update { it.copy(activeReminder = reminder) }
             _uiState.update { it.copy(activeReminder = reminder) }
@@ -4038,9 +4042,7 @@ class ReadBookViewModel(
     }
     }
 
 
     private fun checkSwitchDayNight(lux: Float) {
     private fun checkSwitchDayNight(lux: Float) {
-        if (!ReadConfig.autoSuggestDayNight) return
-        if (System.currentTimeMillis() - lastSwitchDayNightReminderTime < REMINDER_COOLDOWN_MS) return
-
+        if (!ReadConfig.autoSuggestDayNight || isDayNightSwitchCoolingDown()) return
         val isNight = ReadConfig.isNightTheme
         val isNight = ReadConfig.isNightTheme
         val styleConfig = _uiState.value.styleConfig
         val styleConfig = _uiState.value.styleConfig
         if (!isNight && lux <= DARK_LUX_THRESHOLD) {
         if (!isNight && lux <= DARK_LUX_THRESHOLD) {