在Doze模式下,指定app到白名单

处于Doze模式时,进行了以下操作。
1.网络接入被暂停
2.系统忽略wakelocks
3.标准的AlarmManageralarms被延缓到下一个maintenancewindow
4.如果你需要在Doze状态下启动设置的alarms,使用setAndAllowWhileIdle()或者setExactAndAllowWhileIdle()。
5.当有setAlarmClock()的alarms启动时,系统会短暂退出Doze模式
6.系统不会扫描Wi-Fi
7.系统不允许syncadapters运行
8.系统不允许JobScheduler运行

怎么将非系统app预置到Doze的白名单中
按步骤1-4操作后,然后全编译。
1.在framework/base/data创建一个data目录
2.在framework/base/data/data下创建deviceidle.xml, 并把要放入白名单的应用按格式写入到该文件

 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<config>
<wl n="com.android.printspooler"/>#package of whitelist app,per package a line 
<wl n="com.tenxu.qq"/>
</config>

3.在 framework/base/data/data下创建一个 android.mk

LOCAL_PATH := $(my-dir)

########################
include $(CLEAR_VARS)

LOCAL_MODULE := deviceidle.xml

LOCAL_MODULE_CLASS := DATA

# This will install the file in /data/system
#
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/system

LOCAL_SRC_FILES := $(LOCAL_MODULE)

include $(BUILD_PREBUILT)

4.在build/target/base.xml 声明deviceidle.xml

 # Base modules (will move elsewhere, previously user tagged)
PRODUCT_PACKAGES += \
.......
bugreportz \
cameraserver \
content \
deviceidle.xml \ #add this line 
dnsmasq \

怎么将系统app预置到Doze的白名单中
参照/system/etc/sysconfig/google.xml,在该文件内添加allow-in-power-save 属性 或者另创建一个xml文件预置到/system/etc/sysconfig/

doze原理分析源码frameworks/base/services/core/java/com/android/server/DeviceIdleController.java

猜你喜欢

转载自blog.csdn.net/zengrunxiu/article/details/83381489