- 应该在做省电优化时首先检查电量状态,使用
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
直接获取状态,关于sticky broadcast - 一直监控电量是矫枉过正的
<receiver android:name=".BatteryLevelReceiver">
这种监听比较合理
<intent-filter>
<action android:name="android.intent.action.ACTION_BATTERY_LOW"/>
<action android:name="android.intent.action.ACTION_BATTERY_OKAY"/>
</intent-filter>
</receiver> - 使用ConnectivityManager监听网络情况,对于网络不好的情况,不进行下载或者刷新数据的操作
- 动态改变Manifest中Receiver的状态,以减少Receiver个数:
ComponentName receiver = new ComponentName(context, myReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP) - 集合后台工作,统一执行,减少设备唤醒次数,延长设备深睡时间。使用不准确定时器,包括AlarmManager.setWindow, AlarmManager.setInexactRepeating, SyncAdapter, JobScheduler等
- LocationManager设置的interval不一定生效,全局使用所有interval中最短的一个。可以设置fastestInterval,减少回调
谷歌官方建议笔记——电量
最新推荐文章于 2021-07-07 15:08:48 发布