/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġandroidx . work Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . annotation . Restrict To Ċ import Ġandroidx . room . Column Info Ċ import Ġandroidx . work . impl . utils . to Millis Compat Ċ import Ġjava . time . Duration Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠA Ġspecification Ġof Ġthe Ġrequirements Ġthat Ġneed Ġto Ġbe Ġmet Ġbefore Ġa Ġ[ Work Request ] Ġcan Ġrun . Ġ ĠBy Ċ Ġ* Ġdefault , ĠWork Requests Ġdo Ġnot Ġhave Ġany Ġrequirements Ġand Ġcan Ġrun Ġimmediately . Ġ ĠBy Ġadding Ċ Ġ* Ġrequirements , Ġyou Ġcan Ġmake Ġsure Ġthat Ġwork Ġonly Ġruns Ġin Ġcertain Ġsituations Ġ- Ġfor Ġexample , Ġwhen Ġyou Ċ Ġ* Ġhave Ġan Ġun meter ed Ġnetwork Ġand Ġare Ġch arging . Ċ Ġ*/ Ċ class ĠConstraints Ċ @ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) Ċ constructor ( ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" required _ network _ type ") ĊĠĠĠ Ġval Ġrequired Network Type : ĠNetwork Type Ġ= ĠNetwork Type . NOT _ REQUIRED , ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" requires _ ch arging ") ĊĠĠĠ Ġprivate Ġval Ġrequires Ch arging : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" requires _ device _ idle ") ĊĠĠĠ Ġprivate Ġval Ġrequires Device Idle : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" requires _ battery _ not _ low ") ĊĠĠĠ Ġprivate Ġval Ġrequires Battery Not Low : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" requires _ storage _ not _ low ") ĊĠĠĠ Ġprivate Ġval Ġrequires Storage Not Low : ĠBoolean , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠN eeded Ġby ĠRoom . ĊĠĠĠĠ Ġ* Ġ@ hide ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ get : Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" trigger _ content _ update _ delay ") ĊĠĠĠ Ġval Ġtrigger Content Update Delay : ĠLong Ġ= Ġ- 1 , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠN eeded Ġby ĠRoom . ĊĠĠĠĠ Ġ* Ġ@ hide ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ get : Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" trigger _ max _ content _ delay ") ĊĠĠĠ Ġval Ġtrigger Max Content Delay : ĠLong Ġ= Ġ- 1 , ĊĠĠĠ Ġ@ get : Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" content _ uri _ triggers ") ĊĠĠĠ Ġval Ġcontent Uri Triggers : ĠSet < Content Uri Trigger > Ġ= Ġset Of (), Ċ ) Ġ{ ĊĠĠĠ Ġconstructor ( other : ĠConstraints ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġrequires Ch arging Ġ= Ġother . requires Ch arging , ĊĠĠĠĠĠĠĠ Ġrequires Device Idle Ġ= Ġother . requires Device Idle , ĊĠĠĠĠĠĠĠ Ġrequired Network Type Ġ= Ġother . required Network Type , ĊĠĠĠĠĠĠĠ Ġrequires Battery Not Low Ġ= Ġother . requires Battery Not Low , ĊĠĠĠĠĠĠĠ Ġrequires Storage Not Low Ġ= Ġother . requires Storage Not Low , ĊĠĠĠĠĠĠĠ Ġcontent Uri Triggers Ġ= Ġother . content Uri Triggers , ĊĠĠĠĠĠĠĠ Ġtrigger Content Update Delay Ġ= Ġother . trigger Content Update Delay , ĊĠĠĠĠĠĠĠ Ġtrigger Max Content Delay Ġ= Ġother . trigger Max Content Delay , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġthe Ġwork Ġshould Ġonly Ġexecute Ġwhile Ġthe Ġdevice Ġis Ġch arging ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrequires Ch arging (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrequires Ch arging ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġthe Ġwork Ġshould Ġonly Ġexecute Ġwhile Ġthe Ġdevice Ġis Ġidle ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Requires Api ( 2 3 ) ĊĠĠĠ Ġfun Ġrequires Device Idle (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrequires Device Idle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġthe Ġwork Ġshould Ġonly Ġexecute Ġwhen Ġthe Ġbattery Ġisn 't Ġlow ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrequires Battery Not Low (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrequires Battery Not Low ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġthe Ġwork Ġshould Ġonly Ġexecute Ġwhen Ġthe Ġstorage Ġisn 't Ġlow ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrequires Storage Not Low (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrequires Storage Not Low ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġ[ Content Uri Trigger ] Ġis Ġnot Ġempty ĊĠĠĠĠ Ġ* Ġ@ hide ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠ Ġfun Ġhas Content Uri Triggers (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontent Uri Triggers . isNotEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| Ġjava Class Ġ!= Ġother . java Class ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġthat Ġ= Ġother Ġas ĠConstraints ĊĠĠĠĠĠĠĠ Ġif Ġ( requires Ch arging Ġ!= Ġthat . requires Ch arging ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( requires Device Idle Ġ!= Ġthat . requires Device Idle ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( requires Battery Not Low Ġ!= Ġthat . requires Battery Not Low ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( requires Storage Not Low Ġ!= Ġthat . requires Storage Not Low ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( trigger Content Update Delay Ġ!= Ġthat . trigger Content Update Delay ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( trigger Max Content Delay Ġ!= Ġthat . trigger Max Content Delay ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( required Network Type Ġ!= Ġthat . required Network Type ) Ġfalse ĊĠĠĠĠĠĠĠ Ġelse Ġcontent Uri Triggers Ġ== Ġthat . content Uri Triggers ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġrequired Network Type . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġif Ġ( requires Ch arging ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġif Ġ( requires Device Idle ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġif Ġ( requires Battery Not Low ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġif Ġ( requires Storage Not Low ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( trigger Content Update Delay Ġxor Ġ( trigger Content Update Delay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ ush r Ġ 3 2 )). toInt () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( trigger Max Content Delay Ġxor Ġ( trigger Max Content Delay Ġ ush r Ġ 3 2 )). toInt () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġcontent Uri Triggers . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA ĠBuilder Ġfor Ġa Ġ[ Constraints ] Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrequires Ch arging Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrequires Device Idle Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrequired Network Type Ġ= ĠNetwork Type . NOT _ REQUIRED ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrequires Battery Not Low Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrequires Storage Not Low Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// ĠSame Ġdefaults Ġas ĠJob Info ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtrigger Content Update Delay : ĠLong Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtrigger Content Max Delay : ĠLong Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcontent Uri Triggers Ġ= Ġmutable Set Of < Content Uri Trigger >() ĊĊĠĠĠĠĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdefault Ġpublic Ġconstructor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ hide ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠĠĠĠĠ Ġconstructor ( constraints : ĠConstraints ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Ch arging Ġ= Ġconstraints . requires Ch arging () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Device Idle Ġ= ĠBuild . VERSION . SDK _ INT Ġ>= Ġ 2 3 Ġ&& Ġconstraints . requires Device Idle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Network Type Ġ= Ġconstraints . required Network Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Battery Not Low Ġ= Ġconstraints . requires Battery Not Low () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Storage Not Low Ġ= Ġconstraints . requires Storage Not Low () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Content Update Delay Ġ= Ġconstraints . trigger Content Update Delay ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Content Max Delay Ġ= Ġconstraints . trigger Max Content Delay ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri Triggers Ġ= Ġconstraints . content Uri Triggers . to Mutable Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġwhether Ġdevice Ġshould Ġbe Ġch arging Ġfor Ġthe Ġ[ Work Request ] Ġto Ġrun . Ġ ĠThe ĊĠĠĠĠĠĠĠĠ Ġ* Ġdefault Ġvalue Ġis Ġ` false `. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġrequires Ch arging Ġ` true ` Ġif Ġdevice Ġmust Ġbe Ġch arging Ġfor Ġthe Ġwork Ġto Ġrun ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Requires Ch arging ( requires Ch arging : ĠBoolean ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . requires Ch arging Ġ= Ġrequires Ch arging ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġwhether Ġdevice Ġshould Ġbe Ġidle Ġfor Ġthe Ġ[ Work Request ] Ġto Ġrun . ĠThe Ġdefault ĊĠĠĠĠĠĠĠĠ Ġ* Ġvalue Ġis Ġ` false `. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġrequires Device Idle Ġ` true ` Ġif Ġdevice Ġmust Ġbe Ġidle Ġfor Ġthe Ġwork Ġto Ġrun ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( 2 3 ) ĊĠĠĠĠĠĠĠ Ġfun Ġset Requires Device Idle ( requires Device Idle : ĠBoolean ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . requires Device Idle Ġ= Ġrequires Device Idle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġwhether Ġdevice Ġshould Ġhave Ġa Ġparticular Ġ[ Network Type ] Ġfor Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Work Request ] Ġto Ġrun . ĠThe Ġdefault Ġvalue Ġis Ġ[ Network Type . NOT _ REQUIRED ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnetwork Type ĠThe Ġtype Ġof Ġnetwork Ġrequired Ġfor Ġthe Ġwork Ġto Ġrun ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Required Network Type ( network Type : ĠNetwork Type ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Network Type Ġ= Ġnetwork Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġwhether Ġdevice Ġbattery Ġshould Ġbe Ġat Ġan Ġacceptable Ġlevel Ġfor Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Work Request ] Ġto Ġrun . ĠThe Ġdefault Ġvalue Ġis Ġ` false `. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġrequires Battery Not Low Ġ` true ` Ġif Ġthe Ġbattery Ġshould Ġbe Ġat Ġan Ġacceptable Ġlevel ĊĠĠĠĠĠĠĠĠ Ġ* Ġfor Ġthe Ġwork Ġto Ġrun ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Requires Battery Not Low ( requires Battery Not Low : ĠBoolean ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . requires Battery Not Low Ġ= Ġrequires Battery Not Low ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġwhether Ġthe Ġdevice 's Ġavailable Ġstorage Ġshould Ġbe Ġat Ġan Ġacceptable Ġlevel Ġfor Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Work Request ] Ġto Ġrun . ĠThe Ġdefault Ġvalue Ġis Ġ` false `. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġrequires Storage Not Low Ġ` true ` Ġif Ġthe Ġavailable Ġstorage Ġshould Ġnot Ġbe Ġbelow Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġa Ġcritical Ġthreshold Ġfor Ġthe Ġwork Ġto Ġrun ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Requires Storage Not Low ( requires Storage Not Low : ĠBoolean ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . requires Storage Not Low Ġ= Ġrequires Storage Not Low ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġwhether Ġthe Ġ[ Work Request ] Ġshould Ġrun Ġwhen Ġa Ġlocal Ġ` content :` Ġ[ Uri ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġupdated . Ġ ĠThis Ġfunctionality Ġis Ġidentical Ġto Ġthe Ġone Ġfound Ġin Ġ` Job Scheduler ` Ġand ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġdescribed Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` Job Info . Builder # add Trigger Content Uri ( android . app . job . Job Info . Trigger Content Uri )`. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġuri ĠThe Ġlocal Ġ` content :` ĠUri Ġto Ġobserve ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtrigger For Desc endants Ġ` true ` Ġif Ġany Ġchanges Ġin Ġdesc endants Ġcause Ġthis ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Work Request ] Ġto Ġrun ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( 2 4 ) ĊĠĠĠĠĠĠĠ Ġfun Ġadd Content Uri Trigger ( uri : ĠUri , Ġtrigger For Desc endants : ĠBoolean ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri Triggers . add ( Content Uri Trigger ( uri , Ġtrigger For Desc endants )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġdelay Ġthat Ġis Ġallowed Ġfrom Ġthe Ġtime Ġa Ġ` content :` Ġ[ Uri ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġchange Ġis Ġdetected Ġto Ġthe Ġtime Ġwhen Ġthe Ġ[ Work Request ] Ġis Ġscheduled . Ġ ĠIf Ġthere Ġare ĊĠĠĠĠĠĠĠĠ Ġ* Ġmore Ġchanges Ġduring Ġthis Ġtime , Ġthe Ġdelay Ġwill Ġbe Ġreset Ġto Ġthe Ġstart Ġof Ġthe Ġmost Ġrecent ĊĠĠĠĠĠĠĠĠ Ġ* Ġchange . ĠThis Ġfunctionality Ġis Ġidentical Ġto Ġthe Ġone Ġfound Ġin Ġ` Job Scheduler ` Ġand ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġdescribed Ġin Ġ` Job Info . Builder # set Trigger Content Update Delay ( long )`. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġduration ĠThe Ġlength Ġof Ġthe Ġdelay Ġin Ġ` time Unit ` Ġunits ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtime Unit ĠThe Ġunits Ġof Ġtime Ġfor Ġ` duration ` ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( 2 4 ) ĊĠĠĠĠĠĠĠ Ġfun Ġset Trigger Content Update Delay ( duration : ĠLong , Ġtime Unit : ĠTimeUnit ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Content Update Delay Ġ= Ġtime Unit . to Millis ( duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġdelay Ġthat Ġis Ġallowed Ġfrom Ġthe Ġtime Ġa Ġ` content :` Ġ[ Uri ] Ġchange ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġdetected Ġto Ġthe Ġtime Ġwhen Ġthe Ġ[ Work Request ] Ġis Ġscheduled . Ġ ĠIf Ġthere Ġare Ġmore ĊĠĠĠĠĠĠĠĠ Ġ* Ġchanges Ġduring Ġthis Ġtime , Ġthe Ġdelay Ġwill Ġbe Ġreset Ġto Ġthe Ġstart Ġof Ġthe Ġmost Ġrecent Ġchange . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġfunctionality Ġis Ġidentical Ġto Ġthe Ġone Ġfound Ġin Ġ` Job Scheduler ` Ġand ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġdescribed Ġin Ġ` Job Info . Builder # set Trigger Content Update Delay ( long )`. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġduration ĠThe Ġlength Ġof Ġthe Ġdelay ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( 2 6 ) ĊĠĠĠĠĠĠĠ Ġfun Ġset Trigger Content Update Delay ( duration : ĠDuration ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Content Update Delay Ġ= Ġduration . to Millis Compat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġmaximum Ġdelay Ġthat Ġis Ġallowed Ġfrom Ġthe Ġfirst Ġtime Ġa Ġ` content :` ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Uri ] Ġchange Ġis Ġdetected Ġto Ġthe Ġtime Ġwhen Ġthe Ġ[ Work Request ] Ġis Ġscheduled . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġfunctionality Ġis Ġidentical Ġto Ġthe Ġone Ġfound Ġin Ġ` Job Scheduler ` Ġand ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġdescribed Ġin Ġ` Job Info . Builder # set Trigger Content Max Delay ( long )`. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġduration ĠThe Ġlength Ġof Ġthe Ġdelay Ġin Ġ` time Unit ` Ġunits ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtime Unit ĠThe Ġunits Ġof Ġtime Ġfor Ġ` duration ` ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( 2 4 ) ĊĠĠĠĠĠĠĠ Ġfun Ġset Trigger Content Max Delay ( duration : ĠLong , Ġtime Unit : ĠTimeUnit ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Content Max Delay Ġ= Ġtime Unit . to Millis ( duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġmaximum Ġdelay Ġthat Ġis Ġallowed Ġfrom Ġthe Ġfirst Ġtime Ġa Ġ` content :` Ġ[ Uri ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġchange Ġis Ġdetected Ġto Ġthe Ġtime Ġwhen Ġthe Ġ[ Work Request ] Ġis Ġscheduled . ĠThis ĊĠĠĠĠĠĠĠĠ Ġ* Ġfunctionality Ġis Ġidentical Ġto Ġthe Ġone Ġfound Ġin Ġ` Job Scheduler ` Ġand Ġis Ġdescribed ĊĠĠĠĠĠĠĠĠ Ġ* Ġin Ġ` Job Info . Builder # set Trigger Content Max Delay ( long )`. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġduration ĠThe Ġlength Ġof Ġthe Ġdelay ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( 2 6 ) ĊĠĠĠĠĠĠĠ Ġfun Ġset Trigger Content Max Delay ( duration : ĠDuration ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Content Max Delay Ġ= Ġduration . to Millis Compat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGenerates Ġthe Ġ[ Constraints ] Ġfrom Ġthis ĠBuilder . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ Constraints ] Ġspecified Ġby Ġthis ĠBuilder ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠConstraints Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Uri Triggers : ĠSet < Content Uri Trigger > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrigger Content Update Delay : ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrigger Max Content Delay : ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri Triggers Ġ= Ġthis . content Uri Triggers . toSet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Content Update Delay Ġ= Ġthis . trigger Content Update Delay ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Max Content Delay Ġ= Ġtrigger Content Max Delay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri Triggers Ġ= Ġempty Set () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Content Update Delay Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Max Content Delay Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠConstraints ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Ch arging Ġ= Ġrequires Ch arging , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Device Idle Ġ= ĠBuild . VERSION . SDK _ INT Ġ>= Ġ 2 3 Ġ&& Ġrequires Device Idle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Network Type Ġ= Ġrequired Network Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Battery Not Low Ġ= Ġrequires Battery Not Low , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Storage Not Low Ġ= Ġrequires Storage Not Low , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Max Content Delay Ġ= Ġtrigger Max Content Delay , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Content Update Delay Ġ= Ġtrigger Content Update Delay , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri Triggers Ġ= Ġcontent Uri Triggers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġclass Ġdescribes Ġa Ġcontent Ġuri Ġtrigger Ġon Ġthe Ġ[ Work Request ]: Ġit Ġshould Ġrun Ġwhen Ġa Ġlocal ĊĠĠĠĠ Ġ* Ġ` content :` Ġ[ Uri ] Ġis Ġupdated . Ġ ĠThis Ġfunctionality Ġis Ġidentical Ġto Ġthe Ġone Ġfound ĊĠĠĠĠ Ġ* Ġin Ġ` Job Scheduler ` Ġand Ġis Ġdescribed Ġin ĊĠĠĠĠ Ġ* Ġ` Job Info . Builder # add Trigger Content Uri ( android . app . job . Job Info . Trigger Content Uri )`. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġuri ĠThe Ġlocal Ġ` content :` ĠUri Ġto Ġobserve ĊĠĠĠĠ Ġ* Ġ@ property Ġtrigger For Desc endants Ġ` true ` Ġif Ġtrigger Ġalso Ġapplies Ġto Ġdesc endants Ġof Ġthe Ġ[ Uri ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠ Ġclass ĠContent Uri Trigger ( val Ġuri : ĠUri , Ġval Ġtrigger For Desc endants : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġas ĠContent Uri Trigger ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ!= Ġother . uri ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( trigger For Desc endants Ġ!= Ġother . trigger For Desc endants ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġuri . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġtrigger For Desc endants . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRepresents Ġa ĠConstraints Ġobject Ġwith Ġno Ġrequirements . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠNONE Ġ= ĠBuilder (). build () ĊĠĠĠ Ġ} Ċ } Ċ