For the complete documentation index, see llms.txt. This page is also available as Markdown.

Battery optimization

Request battery optimization whitelist

Android has various power-saving modes across all manufacturers. One common feature is the doze mode. This mode prevents the application from wakeup and has a negative impact on detection of the MOVE SDK. To circumvent this, the application can request to be whitelisted for such optimizations.

fun isIgnoringBatteryOptimizations(context: Context): Boolean {
    val pm = context.getSystemService(Context.POWER_SERVICE) as PowerManager
    return pm.isIgnoringBatteryOptimizations(context.packageName)
}

@SuppressLint("BatteryLife")
fun requestIgnoreBatteryOptimization(activity: Activity) {
    if (!isIgnoringBatteryOptimizations(activity)) {
        val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply {
            data = Uri.parse("package:${activity.packageName}")
        }
        try {
            activity.startActivityForResult(intent, BATTERY_REQUEST_CODE)
        } catch (t: Throwable) {
            // handle exception
        }
    }
}
Ignore battery optimizations

Third party battery saving

Some manufacturers have their own implementations of battery saving features. Since we cannot cover all manufacturers here, a nice source for tips of keeping the app alive can be found at dontkillmyapp.

Last updated