澳门新葡萄京官网注册 6

Android后台调度任务与省电

I. Handler:

在经过存活的之间有效利用, Google官方推荐使用。

  • 简简单单易用。
  • 上情下达飞速。

在现阶段的Application开采中,实践一些异步职责非常广泛,个中多少任务的试行周期以致超过了Application的生命周期,比方有的下载数据的任务依然局地更新互连网能源的职分。不常大家要求实践一些非立时伊始的天职。Android提供了一些得以在applications中明智利共和国用的API,用于
实施一些预料后台职务。

从Android6.0(API23卡塔尔最初,
Google为Android参预了两种省电性格,通过管理Android应用(以下简单称谓应用卡塔尔在非充电状态下的设备中的运转攻略来完毕延长客户的Android设备接受时间的指标。这三种性格存在一定的差距,Doze方式通过延迟应用在设施长日子待机状态下对于CPU和网络财富的运用来完成节约财富;而App
Standby则是透过延迟方今未被运用的后台应用对于网络的央求来完毕平等的目标。

II. AlarmManager:

运用系统层级的石英钟服务(持有Wake lock卡塔尔。

万一急需标准的准时任务,这么些是一流采纳。

选料八个老少咸宜推行办法能够巩固application
的性质,同一时候能够节约设备的电量损耗。

Doze和App
Standby在Android6.0及以上的Android设备中得以影响全部运转境况下的Android应用,无论那些使用的Target
API是还是不是是钦点为API23。为了保证客商取得在不一样Android版本下的行使经验一致性,开采者必要对应用在Doze及App
Standby形式下做相应的适配。

1. 功能

  • 在大意的时光间隔 运转/重复实践 内定任务。
  • 钦点正确的年月间距试行职责。

Android M引入了 Doze
mode用来在客商不行使手提式有线电话机一段时间后最大大概地节约电量。

Doze初体验

客商的Android设备处于未充电状态,静止且显示屏关闭一段时间之后,Android系统就能够自动走入Doze方式。在Doze方式下,Android系统将会因此节制后台应用对CPU密集型服务以致网络的施用来降低电量消耗。其余,Android系统还或许会延迟后台应用的乔布斯、Syncs和Alarms等操作。

好端端意况下,Android系统会周期性的淡出Doze格局然后实行以前推迟的行使移动。Android系统退出Doze情势的那么些短暂期被称作“维护窗口”。在这里个非常短的护卫窗口时期,系统将会苏醒全体Doze形式中推迟的Syncs、Jobs和Alarms等操作,并不久开放后台应用对于网络的拜访权限。

澳门新葡萄京官网注册 1

Figure 1.
Doze形式为使用提供了一个周期性的可供役使使用网络以完结被推迟义务的维护窗口

在保险窗口的末尾,Android系统又会另行走入Doze方式,一视同仁复搁浅全体的乔布斯、Syncs和Alarms等操作的实行。系统会在再三进来和抽离Doze情势之后智能调解时间段,最终明显下落退出Doze形式的功用,为长日子处在未充电状态且未有移动的Android设备最大限度保存电量。

在客商通过运动、点亮显示器大概三回九转充电器唤醒Android设备之后,系统将会自行退出Doze格局并复苏使用到日常的专业情况。

2. 特征

  • 登记之后,无论是自身的使用进度是不是留存/组件是不是留存,都会健康推行。
  • 有着注册的挂钟服务都会在系统重启后重新复苏设置,因此一旦须要保证职责,就要求注册RECEIVE_BOOT_COMPLETE,保险重启后,能够重复将任务注册到机械钟服务中。
  • AlarmManager管理的是三个PendingIntent,因而普通是开发银行二个劳动,实行处监护人务。

以下是多少个Android提供的API:

Doze形式下的限量

Android应用项于Doze形式下时会受到以下节制:
1.网络访谈被挂起
2.Wake Locks被无视
3.AlarmManager创制的Alarms将被推移到下二个护卫窗口,通过setAndAllowWhileIdle()以及setExactAndAllowWhileIdle()澳门新葡萄京官网注册 ,安装的Alarms将会在Doze情势下正规履行,同有时候经过setAlarmClock()安装的Alarms也会健康推行—Android系统将会在设如时期在此之前自动退出Doze情势
4.Android系统将会停下推行Wi-Fi的围观
5.Android系统将会终止Sync Adapter的同步操作
6.Android系统也会结束JobScheduler的定时操作

3. 备注

  • 官方不提议网络央浼相关的接受AlarmManager。
  • 假造到电量损耗,建议非新鲜境况选择大约时间的措施,那样Android会尽量让多少个职务打包在联合具名实施,幸免再三的唤起手提式有线电话机。
  • Alarm Manager
  • Job Scheduler
  • GCM Network Manager
  • Firebase Job Dispatcher
  • Sync Adapter

适配Doze模式

Doze形式对两样选拔的震慑程度信赖于采取本人所提供的本领以致选择所信任的种类服务。相当多施用能够不通过其余改过就在Doze方式下健康运维,而有个别利用则必得开展优化后才足以符合规律的在Doze方式下运作。对Doze方式张开适配重要应该思索使用对互联网、Alarms、Jobs和Syncs的施用,适配Doze情势的运用应当能急速的运用Doze格局下的护卫窗口来做一些少不了的操作。

Doze格局对于使用AlarmManager的应用会有相当大的熏陶,首如果因为在Android5.1(API22卡塔尔或以下的Android系统中,当系统进入Doze方式之后,Alarms将会被系统忽视。为了让Android应用能够在处于Doze格局下系统中健康运维Alarms,Android6.0(API23卡塔尔国参加了五个新的Alarms方法:setAndAllowWhileIdle()setExactAndAllowWhileIdle(),通过那七个办法创立的Alarms在Doze方式下会符合规律运转。

Note:
使用setAndAllowWhileIdle()setExactAndAllowWhileIdle()情势的采取,9分钟以内只可以运营一回Alarms劳动。

Doze情势对于网络的范围超级大程度上会影响到利用的例行运营,非常是对于信任Tickles和Notification这类实时消息提示的选拔。假设三个施用须要依赖于互连网连接来兑现不间断的选择新闻,那么就相应尽可能的运用GCM服务。

为了确定保证应用在Doze情势下也能如预期中一律的办事,能够运用adb调节和测量试验命令来手动使Android系统步向或抽离Doze形式来测量试验应用的展现。

III. Job Scheduler:

JobScheduler官方文档

提出互联网有关职责放到Job Scheduler。

系统重启今后,职分会依旧保留在Job Scheduler当中。

独有在Api21或以上的系统帮助

使用Service的问题

Services允许在后台长日子运作职分。可是在后台施行Services相对来讲比较耗能。

Services固然不进行如何使得的天职,也会一向攻克设备的财富。当那一个后台Services监听系统的播放时会加重以上的主题素材。

App Standby初体验

在App
Standby方式下Android系统会使四个客商长日子未选拔的使用步向空闲状态。具体来讲,当客户长日子未与行使爆发相互操作或以下放肆场景都未现身时,Android系统就能够使利用步入空闲状态:
1.顾客主动运行应用
2.行使存在前台进程(前台活动或前台服务,或有组件被另一前台活动及劳动使用)
3.利用创立了叁个顾客可以预知的锁屏界面上依然是收入Notification
tray中的Notification

当客商给Android设备联网充电电源时,Android系统会将享有处于Standby状态的行使释放,允许它们自由的访问网络并实施全体Standby时期暂停的乔布斯和Sync。假如利用长日子处于空闲状态,Android系统将会允许处于空闲状态的利用以大概一天二回的频率访谈网络。

1. 优势

  • 更节省电量
  • 更高效
  • 更易用

App运维期的Schedule任务

在app运维期试行一些Schedule职分时,推荐使用Handler协作Timer和Thread。那比接收Alarm
Manager, Job Scheduler等更简便,也更便捷。

通过GCM与处于空闲状态的应用交互作用

GCM是Google提供的Cloud-to-Device音信推送服务,那项劳动允许Android设备上的应用通过它来获取相应后端服务的消息流。GCM提供了三个独一的、持续性的云端链路,全数对实时消息通讯有需要的选用都能够分享这一链路。这一分享链路的留存能够显明的改正功耗速度,因为具备应用GCM的行使将不会需求单独维护一条链路。基于那或多或少,假设叁个选拔须要日常与后端服务开展通讯,猛烈建议开拓者使用GCM服务。

GCM通过高优先级GCM音信完结了在Doze和App
Standby方式下信息的正规递送。GCM高优先级音信能够在Doze和App
Standby方式下平静的唤醒应用以便它们访问互联网,实现预期的干活。GCM会在收获到对应应用的下水音信时短暂的提示应用,授予该行使网络访问和一部分唤醒锁的力量,并在确准时间后使系统或利用再次回到空闲状态。

高优先级GCM新闻并不会阻断Doze情势,也不会影响任性别的使用的所处状态。那代表应用能够经过它在落实牢固急忙的通讯的同时最大程度的下落对于电瓶的熏陶。

故此,在使用须要同服务器下行新闻实时相互影响的地方下,就相应运用GCM。同一时间,倘诺服务器和选拔已经安顿GCM,需求确认保障对于一些急切通告使用高优先级GCM音讯以便处于Doze方式下的运用也能及时收到该音信。

2. 显眼的内定特定情景下推行(JobInfo卡塔尔(قطر‎:

出于是将四个任务打包在贰个景观下实行,由此进行有多少的延后;况且有依期,假若在期限内还没满足一定情景,系统会将这个任务参加队列,而且随着会开展实行。

  1. 配备开端充电
  2. 空闲
  3. 一而再一而再上互联网
  4. 断开网络

App生命周期外的Schedule 任务

有个别亟待思考之处

享有的利用都应有具备在Doze格局下管理互联网连接、Alarms、Jobs和Syncs的本事,何况在方便的时候使用高优先级GCM音讯来通讯。在一些特定的事态下,高优先级GCM新闻大概并不足以保险应用在Doze格局下的常规运行。对于那几个十分意况,Android系统还提供了三个可配置的白名单机制,处于白名单之中的应用可避防遭Doze和App
Standby形式的影响。

在Doze和App
Standby形式下处于白名单中的应用能够正常使用网络并装有部分唤醒锁。但是,白名单并不意味着全体。处于白名单中的应用也汇合对鲜明的平整约束,比如说:白名单中的应用的Jobs和Syncs甚至常规Alarms也会被延缓运营。应用能够透过调用isIgnoringBatteryOptimizations()艺术来推断自个儿是不是是处于白名单之中。

客商能够透过Settings>Battery>Battery
Optimization来手动配置利用白名单。同样,Android系统也为利用提供了须要白名单的平坦大路。
1.选取能够由此创办ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
intent指引客商前往Battery Optimization分界面并将团结参预白名单。
2.选择具备REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限制期限能够一向触及叁个系统级的Dialog来唤醒顾客将团结参加白名单(没有要求步入Settings页面)。
3.应用通过创建ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
intent来触发上述Dialog。任性意况下,客商能够凭借个体意愿选用移除白名单中的应用。

Android应用在央浼客户将团结投入白名单在此以前,必要保障自身切合“白名单特例”所述的图景。

Note:谷歌(Google卡塔尔国Play条目对于Android6.0+系统中的应用严俊禁绝其通过诉求顾客将本野山参预白名单的格局来幸免受到系统电瓶管理种类的影响,除非该利用的主导功效会在不步向白名单的情景下遭到震慑。

3. 接口类型

boolean onStartJob(JobParams params) {
    // 开始执行
    // 注意这个方法是在主线程执行的,如果是耗时操作请抛到独立线程中
    // jobFinished(JobParameters params) // 在完成任务并且决定是否还需要定时执行更多任务
    // return 是否是在独立现在还有事务要执行
}

void onStopJob(){
    // 用于清理数据,在结束任务后被回调。
}

Alarm Manager

AlarmManager提供了系统品级alarm
service的输入。它提供了在应用运转期外实施操作的方式。AlarmManager能够在今后的某部时刻启动一个劳务,它能够在定期达到时接触一个PendingIntent。

注册后的alarm能够在道具锁屏时依旧是保留的(职分能够在设施锁屏时接触),可是在设备关闭或重启之后就没用了。

AlarmManager
可以在用来在一准时期接触职务的操作,并不提供其余更完备的实施基准:如设备空闲、互联网可用可能起头充电等条件。

亲自过问:当大家须求在三个钟头后要么每种时辰执行一些操作时,AlarmManager是贰个不易的挑精拣肥。然则力不能及在诸如网络可用或许配备非充电状态等情事现身时接触事件。

测量试验应用在Doze及App Standby情势下的突显

为了保障顾客体验的一致性,须求测量试验应用在Doze以致App
Standby格局下的变现。

IV. GCM

GCM Netwrok Manager实际上在 Api 21 或上述也是运用了 Job
Scheduler,早前的版本接受的是谷歌(Google卡塔尔(قطر‎ Play Service中完结Job
Scheduler的固守。

在GCMNetworkManager中有为数不菲有利省点的平整。

Job Scheduler

Job Scheduler
是兼具关乎的实行预期职务首选的法子,能够急速地奉行后台职责。Job
Scheduler API在Android 5.0(API 21)中引进的。

Job
Scheduler运转在器材有可用能源依然适度的口径时接触职分。在创立职责时得以自定义种种规范。当满足生命的标依期,系统就要app的
JobService中奉行定义的职分。Job
Scheduler还是能够依靠Doze形式和应用程序的待机节制实行供给的操作。

用这种艺术举办职责,能够让设备长日子处在休眠状态,进而拉开电瓶使用时间长度。通常的话Job
Scheduler能够用来试行对时间供给不严格的享有职责。

Doze情势下的测量试验

能够透过以下几个步骤来测量试验Android应用在Doze情势下的变现:
1.施用Android6.0+(API23卡塔尔及以上系统的Android物理或编造设备
2.将器材同开采机器相连接
3.周转并确定保障应用场于活动状态
4.关门显示屏(应用照旧处在活动状态)
5.经过以下命令强迫系统步入和退出Doze方式:

$adb shell dumpsys battery unplug  
$adb shell dumpsys deviceidle step,

某个景况下大概需求周转第一个指令多次。重复上述命令直到设备情况变成空闲态。
6.考察应用在退出Doze格局时的表现,确认保证应用在系统退出Doze格局时的提示进度是平缓的。

1. 接口类型

  • 通过 OneoffTask.Builder()PeriodicTask.Builder()始建职责。
  • GcmTaskService#onRunTask(TaskParams params)是在后台线程试行的。

触发场景与JobInfo中的平等。

GCM Network Manager

GCM (谷歌(Google卡塔尔(قطر‎ Cloud Messaging卡塔尔网络管理具备具有JobScheduler天性。GCM
互联网管理能够用于高效试行全体重复或单次不紧迫的天职,同一时候能够使得的节约设备电量。

它用来后向包容,能够在Android 5.0以下使用。在API
23及以上GCM实际接收了系统的JobSchedule。GCM 网络管理接收了谷歌(Google卡塔尔 Play
services中的scheduling 引擎,因而只好在装置了Google Play 的配备中接收。

Google猛烈建议GCM的顾客升高到FCM,使用Firebase Job
Dispatcher施行全数职责。

App Standby格局下的测验

可以通过下述步骤测验Android应用在App Standby情势下的表现:
1.使用Android6.0+(API23卡塔尔及以上系统的Android物理或编造设备
2.将设备同开拓机器相连接
3.运作并保管应用场于活动状态
4.通过以下命令强制行使走入App Standby方式:

$ adb shell dumpsys battery unplug 
$ adb shell am set-inactive <packageName> true

5.由此以下命令模拟唤醒应用:

$ adb shell am set-inactive <packageName> false 
$ adb shell am get-inactive <packageName>

6.观测应用在升迁后的景观展现,确认保障应用平缓的从App
Standby情势中还原。极其需求小心的是,你须要保险应用的打招呼以致后台Jobs在平复之后寻常运作。

V. Sync Adapter

Transferring Data Using Sync
Adapters

澳门新葡萄京官网注册 2

  • 习以为常是用以协同超多的数据。
  • 兴许那是Job Scheduler API 21前比较好的代替品。

协助实行服务端与地面设备中的数据。

Firebase Job Dispatcher

The Firebase JobDispatcher也是三个实践后台任务的库,它向后非常(扶植 API
21时而),能够在API 9+上运行。

The Firebase JobDispatcher能够运转在未安装谷歌(Google卡塔尔国 Play 的设施上。The
Firebase JobDispatcher实际使用了AlarmManager,当然假如设备安装了谷歌Play,则The Firebase JobDispatcher使用谷歌(Google卡塔尔(قطر‎ Play中的Scheduling 引擎。

白名单特例

上边包车型地铁表格计算了一部分可以选取的加盟白名单的情事。大要上来讲,除非Android应用在非白名单格局下会影响到此中央职能的接纳,何况经过选择高优先级GCM音讯也不可能解决这一标题,这种情景下才得以行使白名单。

澳门新葡萄京官网注册 3

【表明】本文翻译自Android官方文书档案,链接地址:https://developer.android.com/training/monitoring-device-state/doze-standby.html#support_for_other_use_cases,
仅作学习之用,对于使用本文所产生的其余难题本人概不肩负。

1. 特征

  • 惠及大数量同步。
  • 没有须求依靠谷歌 Play Service。
  • 省电稳定。
  • 客商能够由此设置中铁杵成针查看同步的小运,以至触发同步,或许关闭同步。
  • API 7 或以上。

Sync Adapter

Sync
Adapter设计用来一头本地和云端的多少。它只能用来推行这种职责。在地面只怕云端数据暴发变化时方可触发多少同步,或者准时触发。Android系统会尝试利用批量合伙进而节省电量,未传输的数目将要队列中等待同步。系统只会在联网状态下品尝举行数量同步。

当然,依然建议尽量选取JobScheduler, Firebase JobDispatcher, or GCM
Network Manager等方式。

2. 备注

  • 可绑定贰个账户。
  • 透过提供ContentProvider,并且与服务端同步的数据库。
  • 除非在设有互连网的时候才触发同步。

实践

介绍了那样多,大家来提供二个job scheduler的示范。

2. 在自然的情景下接触同步

尽可能的包装全体要求联合的任务在四个周期中试行,以此来展开尽可能的节约手提式有线电话机电量。

  • 服务端/设备端数据产生变化。
  • 手提式有线电话机闲置时。
  • 一天。
  • 即使同步失利,会放到一同退步的行列中,在尽量的时候实行同盟。

1. 创建 job service

继承JobService来创建JobSchedulerService:

public class JobSchedulerService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}

JobService在main thread中执行,全部耗费时间逻辑应在异步线程中。

而且还索要在AndroidManifest中登记JobScheduler:

<application>
<service
android:name=”.JobSchedulerService “
android:permission=”android.permission.BIND_JOB_SERVICE”
android:exported=”true”/>
</application>

VI. Doze Mode

2. 创造贰个JobInfo

成立JobInfo,如下所示须要传递 JobService。Job Builder允许创造job
推行的多个标准。

ComponentName serviceName = new ComponentName(context, JobSchedulerService.class);
JobInfo jobInfo = new JobInfo.Builder(JOB_ID, serviceName)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
.setRequiresDeviceIdle(true)
.setRequiresCharging(true)
.build();

Deep Doze Mode

API 第23中学央市直机关接称其为Doze Mode。

无论Target SDK是有个别,只要设备是Android API 23或以上会启用该方式。

3. 推行职分

JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
int result = scheduler.schedule(jobInfo);
if (result == JobScheduler.RESULT_SUCCESS) {
Log.d(TAG, “Job scheduled successfully!”);
}

能够在此边下载完整代码:GitHub。

1. 特征

  • 意志: 在客商间隔设备未来,尽可能的减少手提式有线电话机电量的消耗。
  • 开拓职员并无需做特别的适配,然则会对地点提到的富有Schedule的艺术(Job
    Scheduler、AlarmManager、Syncs AdapterState of Qatar实行潜濡默化。

经过运动窗口打包使命乞请,而且间距时间会更久。

澳门新葡萄京官网注册 4

总结

在实践预期任务,供给紧凑构思实施任务的火候,接收适当的章程,考虑选择的运行品质和节约品质。

JobScheduler特别方便使用,相同的时间即便在系统重启后还能执行。可是要注意JobScheduler必要API
21+。

应接阅读,原来的书文地址:https://android.jlelse.eu/schedule-tasks-and-jobs-intelligently-in-android-e0b0d9201777

应接关怀公众号wutongke,按期推送线上支付前沿技巧文章:

澳门新葡萄京官网注册 5

wutongke

2. 进去准绳

连同期满意以下情形过后一段时间(大致30分钟卡塔尔未来生效:

  • 手提式有线电话机未有在充电
  • 显示屏被关门
  • 手提式有线话机各个地方状态保持安静

退出标准是,步入标准化中随便条件状态爆发变化。

3. 在四个管理窗口之间的无绳电话机状态

  1. 对具备应用屏绝网络访问。
  2. 具有JobScheduler、Sync-Adapter、AlarmManager的天职都会被延后到窗口中实践。
  3. 系统会拒却全数来自接收的WAKE-LOCK
  4. 停下全部Wifi以至GPS扫描
  5. 减少任务事件从设备检查评定WiFi火热。

Light Doze Mode

API 24 或上述会启用该情势

1. 特征

  • 相比之下Deep Doze Mode,打包职责的频率会越来越高些

澳门新葡萄京官网注册 6

2. 踏入标准

会同事满意以下情形后一段时间(大致几分钟卡塔尔(قطر‎今后生效:

  • 手提式有线电话机未有在充电
  • 显示屏被关闭
  • 处于稳定意况/不牢固情状

抑或在偏下的条件:

  • 处于Deep Doze Mode
  • 显示器关闭
  • 手提式有线电话机未有在充电
  • 手机不再处于平稳意况

3. 退出标准

  • 显示屏张开
  • 手提式无线电话机开头充电
  • 进入Deep Doze Mode

4. 在七个管理窗口之间的无绳电话机状态

  • 对持有应用拒绝互连网访谈。
  • 抱有JobScheduler与Sync-Adapter的天职都会被延后到窗口中试行。
  • 不会对AlarmManager中的职责进展震慑,不过将无网络访谈(如若你的天职急需互联网访谈,是时候改用JobScheduler或Sync-Adapter,保险在职务窗口举行会有网络)

中断/避开Doze

以下有所情形,Google官方都建议不在特殊意况,不要去行使,由于中断了省电的法则。

1. AlarmManager

  • 点名必要标准时间的事件: setAndAllowWhileIdle()setExactAndAllowWhileIdle()。不过在非窗口期间并不铲除无互联网访谈的节制,并且唯有10s的时日予以管理。
  • 点名时钟事件AlarmManager.setAlarmClock()的风云会在石英钟甘休前,令系统短暂的完全脱离Doze形式,何况健康处监护人件,系统为了呈现该机械钟事件,将会在status
    bar上海展览中心示物理石英钟的icon。

2. FCM/GCM

(Firebase Cloud Messaging,旧版中称之为Google Cloud Messaging(GCM卡塔尔国卡塔尔。

FCM/GCM中高优先级的职分安顿中("priority" : "high"卡塔尔(قطر‎的新闻,在Doze形式下能够健康及时到达。

3. 白名单

白名单官方文书档案

法定建议可构思参预白名单的情状

  • 积极诉求插手白名单,客户相通以往步向白名单;
  • 顾客也得以积极将App从白名单中剔除或丰裕应用;
  • 利用能够因而isIgnoringBatteryOptimizations()来获知是不是在白名单中;
  • 白名单的使用能够访问互连网与有着有效的WAKELOKE,可是任何Doze的自律照旧存在(如延后的Job
    Scheduler、Syncs-Adapter、AlarmManager卡塔尔(قطر‎;

白名单的伸手格局:

  • 通过ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS开拓电量优化页面,客商能够通过寻找来关闭应用的电量优化,以此出席白名单。
  • 先持有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权力,然后通过运营IntentACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS一向弹出Dialog让客户关闭应用的电量优化,以此插手白名单。

4. 非常情况

前台服务(foreground-serviceState of Qatar将不会受到Doze方式影响。

Doze格局测量检验

Google官方提供了部分adb命令用于测量检验Doze格局,而非须要经过等待来步入Doze格局的。

1. 进入Doze模式

  • 预备一台系统是在Android Nougat Devloper Preview4或以上版本的设备。
  • 将其总是连接到计算机。
  • 通过 adb shell dumpsys battery unplug 命令让设备进入未连接充电的格局。
  • 通过 adb shell dumpsys deviceidle step [light|deep] 强行步入Doze方式。

脱离Doze方式,让手提式有线电话机复苏平常须要重新苏醒设置充电情势: adb shell dumpsys battery reset

2. 别的指令

  • 获得器械情况 adb shell dumpsys deviceidle get [light|deep|force|screen|charging|network]

在Android Nougat Developer Preview 4中,Doze情势的景象周期是:

Light: ACTIVE -> IDLE -> IDLE_MAINTENANCE -> OVERRIDE
Deep: ACTIVE -> IDLE_PENDING -> SENSING -> LOCATING -> IDLE -> IDLE_MAINTENANCE
  • Choosing the Right Background Scheduler in
    Android
  • Diving into Doze Mode for
    Developers

© 2012 – 2016, Jacksgong(blog.dreamtobe.cn). Licensed under the
Creative Commons Attribution-NonCommercial 3.0 license (This license
lets others remix, tweak, and build upon a work non-commercially, and
although their new works must also acknowledge the original author and
be non-commercial, they don’t have to license their derivative works
on the same terms). 

发表评论

电子邮件地址不会被公开。 必填项已用*标注