こんにちはフリーランスの永田です。
AndroidのDozeの最適化を紹介致します。最近のAndroidはバッテリーの電池をAIが自動で制御しているようです。
省エネ効果のデメリット部分は、アプリがスリープ状態の時に、機能もスリープ状態の点です。これをDozeと言います。
最近のVersionが新しくなったせいか、なかなか正しく動く挙動がなかったので、ご紹介致します。
確認項目
電池の最適化を押下
最適化されていないアプリの一覧を確認
アプリ初起動時にポップアップが表示される
アプリがスリープ状態でも通知などの機能を活用できる

一番下のSampleDpzeModeが最適化されていないアプリです。

アプリ初起動時にポップアップが表示される。

アプリがスリープ状態でも通知などの機能を活用できる
やり方
簡単なので、詳細の解説は割愛いたします。使用する人は自分で読んでみてください。
class MainActivity : AppCompatActivity() { var pm: PowerManager? = null var MY_IGNORE_OPTIMIZATION_REQUEST = 1 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) pm = getSystemService(Context.POWER_SERVICE) as PowerManager } override fun onResume() { super.onResume() val isIgnoringBatteryOptimizations: Boolean = pm!!.isIgnoringBatteryOptimizations(packageName) if (!isIgnoringBatteryOptimizations) { val intent = Intent() intent.action = Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS intent.data = Uri.parse("package:$packageName") startActivityForResult(intent, MY_IGNORE_OPTIMIZATION_REQUEST) } } @SuppressLint("MissingSuperCall") override fun onActivityResult( requestCode: Int, resultCode: Int, data: Intent? ) { val isIgnoringBatteryOptimizations = pm!!.isIgnoringBatteryOptimizations(packageName) if (isIgnoringBatteryOptimizations) { // Ignoring battery optimization } else { // Not ignoring battery optimization } } }
AndroidManifest.xml
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
バックグラウンドで動く機能は、Android特有のストロングポイントだと思います。
以上、貴重なお時間、お読み下さいまして、誠にありがとうございます。
コメントを残す