1.Doze模式下豁免的应用和白名单列表
1.什么是白名单列表?
一系列应用包名的集合。
2.有什么作用?
处于白名单列表中的应用,不受Doze的影响,即Doze不会对该应用进行限制,如该应用的Job、Alarm、网络等不会进行限制。
3.DeviceIdleController中对白名单的读取
Doze白名单有两类来源:
- 1.用户设置
- 2.预置到配置文件中。
用户设置的将最终写到/data/system/deviceidle.xml
文件中。
来看下可以预值的配置文件有哪些?以及是如何读取的。在onStart()方法中,通过SystemConfig类读取了两类配置文件:
@Override
public void onStart() {
synchronized (this) {
SystemConfig sysConfig = SystemConfig.getInstance();
//得到允许在省电模式豁免但不允许IDLE状态豁免的应用列表,读取的是/etc/permissions/platform.xml中
//的<allow-in-power-save-except-idle>元素的应用包名
ArraySet<String> allowPowerExceptIdle = sysConfig.getAllowInPowerSaveExceptIdle();
for (int i=0; i<allowPowerExceptIdle.size(); i++) {
String pkg = allowPowerExceptIdle.valueAt(i);
try {
//过滤只得到系统应用,并加入mPowerSaveWhitelistAppsExceptIdle中
ApplicationInfo ai = pm.getApplicationInfo(pkg,
PackageManager.MATCH_SYSTEM_ONLY);</