mirror of
https://github.com/home-assistant/android
synced 2024-10-15 12:32:54 +00:00
Reduce usage of job scheduling to avoid throttling (#3087)
This commit is contained in:
parent
21d301b3f8
commit
f15b192a79
|
@ -135,7 +135,7 @@ class ActivitySensorManager : BroadcastReceiver(), SensorManager {
|
|||
)
|
||||
|
||||
// Send the update immediately
|
||||
SensorWorker.start(context)
|
||||
SensorReceiver.updateAllSensors(context)
|
||||
}
|
||||
}
|
||||
if (SleepSegmentEvent.hasEvents(intent) && isEnabled(context, sleepSegment.id)) {
|
||||
|
|
|
@ -350,7 +350,7 @@ class LocationSensorManager : LocationSensorManagerBase() {
|
|||
highAccuracyUpdateInterval.statelessIcon,
|
||||
mapOf()
|
||||
)
|
||||
SensorWorker.start(latestContext)
|
||||
SensorReceiver.updateAllSensors(latestContext)
|
||||
HighAccuracyLocationService.restartService(latestContext, intervalInSeconds)
|
||||
}
|
||||
|
||||
|
@ -369,7 +369,7 @@ class LocationSensorManager : LocationSensorManagerBase() {
|
|||
highAccuracyUpdateInterval.statelessIcon,
|
||||
mapOf()
|
||||
)
|
||||
SensorWorker.start(latestContext)
|
||||
SensorReceiver.updateAllSensors(latestContext)
|
||||
HighAccuracyLocationService.startService(latestContext, intervalInSeconds)
|
||||
}
|
||||
|
||||
|
@ -381,7 +381,7 @@ class LocationSensorManager : LocationSensorManagerBase() {
|
|||
highAccuracyMode.statelessIcon,
|
||||
mapOf()
|
||||
)
|
||||
SensorWorker.start(latestContext)
|
||||
SensorReceiver.updateAllSensors(latestContext)
|
||||
HighAccuracyLocationService.stopService(latestContext)
|
||||
}
|
||||
|
||||
|
|
|
@ -99,6 +99,7 @@
|
|||
<action android:name="android.app.action.NEXT_ALARM_CLOCK_CHANGED" />
|
||||
<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
|
||||
<action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
|
||||
<action android:name="io.homeassistant.companion.android.UPDATE_SENSORS" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ package io.homeassistant.companion.android.bluetooth.ble
|
|||
|
||||
import android.content.Context
|
||||
import io.homeassistant.companion.android.sensors.BluetoothSensorManager
|
||||
import io.homeassistant.companion.android.sensors.SensorWorker
|
||||
import io.homeassistant.companion.android.sensors.SensorReceiver
|
||||
import org.altbeacon.beacon.Beacon
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.round
|
||||
|
@ -80,6 +80,6 @@ class IBeaconMonitor {
|
|||
private fun sendUpdate(context: Context, tmp: List<IBeacon>) {
|
||||
beacons = tmp
|
||||
sensorManager.updateBeaconMonitoringSensor(context)
|
||||
SensorWorker.start(context)
|
||||
SensorReceiver.updateAllSensors(context)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ import io.homeassistant.companion.android.database.settings.WebsocketSetting
|
|||
import io.homeassistant.companion.android.sensors.BluetoothSensorManager
|
||||
import io.homeassistant.companion.android.sensors.LocationSensorManager
|
||||
import io.homeassistant.companion.android.sensors.NotificationSensorManager
|
||||
import io.homeassistant.companion.android.sensors.SensorWorker
|
||||
import io.homeassistant.companion.android.sensors.SensorReceiver
|
||||
import io.homeassistant.companion.android.settings.SettingsActivity
|
||||
import io.homeassistant.companion.android.util.UrlHandler
|
||||
import io.homeassistant.companion.android.websocket.WebsocketManager
|
||||
|
@ -537,7 +537,7 @@ class MessagingManager @Inject constructor(
|
|||
}
|
||||
}
|
||||
}
|
||||
COMMAND_UPDATE_SENSORS -> SensorWorker.start(context)
|
||||
COMMAND_UPDATE_SENSORS -> SensorReceiver.updateAllSensors(context)
|
||||
COMMAND_LAUNCH_APP -> {
|
||||
if (!jsonData[PACKAGE_NAME].isNullOrEmpty()) {
|
||||
handleDeviceCommands(jsonData)
|
||||
|
@ -867,7 +867,7 @@ class MessagingManager @Inject constructor(
|
|||
)
|
||||
}
|
||||
BluetoothSensorManager().requestSensorUpdate(context)
|
||||
SensorWorker.start(context)
|
||||
SensorReceiver.updateAllSensors(context)
|
||||
}
|
||||
}
|
||||
COMMAND_BEACON_MONITOR -> {
|
||||
|
|
|
@ -159,7 +159,7 @@ class NotificationSensorManager : NotificationListenerService(), SensorManager {
|
|||
)
|
||||
|
||||
// Need to send update!
|
||||
SensorWorker.start(applicationContext)
|
||||
SensorReceiver.updateAllSensors(applicationContext)
|
||||
}
|
||||
|
||||
override fun onNotificationRemoved(sbn: StatusBarNotification) {
|
||||
|
@ -217,7 +217,7 @@ class NotificationSensorManager : NotificationListenerService(), SensorManager {
|
|||
)
|
||||
|
||||
// Need to send update!
|
||||
SensorWorker.start(applicationContext)
|
||||
SensorReceiver.updateAllSensors(applicationContext)
|
||||
}
|
||||
|
||||
private fun updateActiveNotificationCount() {
|
||||
|
|
|
@ -71,6 +71,12 @@ class SensorReceiver : SensorReceiverBase() {
|
|||
|
||||
const val ACTION_REQUEST_SENSORS_UPDATE =
|
||||
"io.homeassistant.companion.android.background.REQUEST_SENSORS_UPDATE"
|
||||
|
||||
fun updateAllSensors(context: Context) {
|
||||
val intent = Intent(context, SensorReceiver::class.java)
|
||||
intent.action = ACTION_UPDATE_SENSORS
|
||||
context.sendBroadcast(intent)
|
||||
}
|
||||
}
|
||||
|
||||
// Suppress Lint because we only register for the receiver if the android version matches the intent
|
||||
|
|
|
@ -27,7 +27,6 @@ import io.homeassistant.companion.android.database.settings.SensorUpdateFrequenc
|
|||
import io.homeassistant.companion.android.database.settings.SettingsDao
|
||||
import io.homeassistant.companion.android.sensors.LastAppSensorManager
|
||||
import io.homeassistant.companion.android.sensors.SensorReceiver
|
||||
import io.homeassistant.companion.android.sensors.SensorWorker
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.flow.asSharedFlow
|
||||
|
@ -232,7 +231,7 @@ class SensorDetailViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
private fun refreshSensorData() {
|
||||
SensorWorker.start(getApplication())
|
||||
SensorReceiver.updateAllSensors(getApplication())
|
||||
}
|
||||
|
||||
fun getSettingTranslatedTitle(key: String): String {
|
||||
|
|
|
@ -713,7 +713,7 @@ class WebViewActivity : BaseActivity(), io.homeassistant.companion.android.webvi
|
|||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
SensorWorker.start(this)
|
||||
SensorReceiver.updateAllSensors(this)
|
||||
presenter.setAppActive(false)
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ import javax.inject.Inject
|
|||
abstract class SensorReceiverBase : BroadcastReceiver() {
|
||||
companion object {
|
||||
const val ACTION_UPDATE_SENSOR = "io.homeassistant.companion.android.UPDATE_SENSOR"
|
||||
const val ACTION_UPDATE_SENSORS = "io.homeassistant.companion.android.UPDATE_SENSORS"
|
||||
const val EXTRA_SENSOR_ID = "sensorId"
|
||||
|
||||
fun shouldDoFastUpdates(context: Context): Boolean {
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
|
||||
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
|
||||
<action android:name="android.app.action.NEXT_ALARM_CLOCK_CHANGED" />
|
||||
<action android:name="io.homeassistant.companion.android.UPDATE_SENSORS" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<uses-library
|
||||
|
|
|
@ -13,6 +13,7 @@ import dagger.hilt.android.AndroidEntryPoint
|
|||
import io.homeassistant.companion.android.home.views.LoadHomePage
|
||||
import io.homeassistant.companion.android.onboarding.OnboardingActivity
|
||||
import io.homeassistant.companion.android.onboarding.integration.MobileAppIntegrationActivity
|
||||
import io.homeassistant.companion.android.sensors.SensorReceiver
|
||||
import io.homeassistant.companion.android.sensors.SensorWorker
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
@ -64,7 +65,7 @@ class HomeActivity : ComponentActivity(), HomeView {
|
|||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
SensorWorker.start(this)
|
||||
SensorReceiver.updateAllSensors(this)
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
|
|
|
@ -25,7 +25,6 @@ import io.homeassistant.companion.android.database.wear.FavoriteCachesDao
|
|||
import io.homeassistant.companion.android.database.wear.FavoritesDao
|
||||
import io.homeassistant.companion.android.database.wear.getAllFlow
|
||||
import io.homeassistant.companion.android.sensors.SensorReceiver
|
||||
import io.homeassistant.companion.android.sensors.SensorWorker
|
||||
import io.homeassistant.companion.android.util.RegistriesDataHandler
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
@ -302,7 +301,7 @@ class MainViewModel @Inject constructor(
|
|||
isEnabled: Boolean
|
||||
) {
|
||||
sensorDao.setSensorsEnabled(listOf(basicSensor.id), isEnabled)
|
||||
SensorWorker.start(getApplication())
|
||||
SensorReceiver.updateAllSensors(getApplication())
|
||||
}
|
||||
|
||||
fun updateAllSensors(sensorManager: SensorManager) {
|
||||
|
|
|
@ -198,7 +198,7 @@ class HealthServicesSensorManager : SensorManager {
|
|||
forceUpdate = info.userActivityState == UserActivityState.USER_ACTIVITY_EXERCISE
|
||||
)
|
||||
|
||||
SensorWorker.start(latestContext)
|
||||
SensorReceiver.updateAllSensors(latestContext)
|
||||
}
|
||||
|
||||
override fun onNewDataPointsReceived(dataPoints: DataPointContainer) {
|
||||
|
|
|
@ -93,6 +93,6 @@ class OnBodySensorManager : SensorManager, SensorEventListener {
|
|||
}
|
||||
|
||||
// Send update immediately
|
||||
SensorWorker.start(latestContext)
|
||||
SensorReceiver.updateAllSensors(latestContext)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,6 +59,12 @@ class SensorReceiver : SensorReceiverBase() {
|
|||
|
||||
const val ACTION_REQUEST_SENSORS_UPDATE =
|
||||
"io.homeassistant.companion.android.background.REQUEST_SENSORS_UPDATE"
|
||||
|
||||
fun updateAllSensors(context: Context) {
|
||||
val intent = Intent(context, SensorReceiver::class.java)
|
||||
intent.action = ACTION_UPDATE_SENSORS
|
||||
context.sendBroadcast(intent)
|
||||
}
|
||||
}
|
||||
|
||||
// Suppress Lint because we only register for the receiver if the android version matches the intent
|
||||
|
|
Loading…
Reference in a new issue