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