Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
いまさらWorkManager
Search
Yoshihiro WADA
January 28, 2019
Programming
1
810
いまさらWorkManager
2019/1/28に開催されたPotatotips #58にて発表した資料です
Yoshihiro WADA
January 28, 2019
Tweet
Share
More Decks by Yoshihiro WADA
See All by Yoshihiro WADA
Gradleの実行環境設定を見直す
e10dokup
0
400
Firebase App Distributionのテストアプリ配信を試しやすくする
e10dokup
0
300
アプリに署名する 〜GitHub ActionsでのCIも見据えて〜
e10dokup
0
800
Profileable buildでより正確なパフォーマンスを掴む
e10dokup
0
640
[DroidKaigi 2021] メディアアクセス古今東西 / Now and Future of Media Access
e10dokup
0
2.6k
今更「dp」を考える / Let's think about "dp" now
e10dokup
0
4.6k
1から学ぶAndroidアプリデバッグ - アプリの動作を追いかけよう / Learn Android application debugging from the scratch - track apps' behaviors
e10dokup
10
2.8k
Guide to background processingを読んでみる / Reading "Guide to background processing"
e10dokup
0
220
よしなに頑張る画像ロードの話 / image load mettya tsurai
e10dokup
2
410
Other Decks in Programming
See All in Programming
イベントストーミングによるオブジェクトモデリング・オブジェクト指向プログラミングの適用・開発プロセスの変遷・アーキテクチャの変革 / Object modeling with Event Storming.
nrslib
12
3.2k
Ruby製社内ツールのGo移行
bgpat
2
270
CSRF対策のやり方、そろそろアップデートしませんか / Update your knowledge of CSRF protection
hiro_y
25
15k
RubyVM を PHP で実装する 〜Hello World を出力するまで〜
memory1994
PRO
1
490
Enhancing Applications with Accessibility API
kishikawakatsumi
3
1k
9年開発を牽引して見えてきた、共通化すべきものと個別でつくるもの ~プログラム言語~
shinout
1
270
フロントエンドパフォーマンス 入門
shouta2
7
1.5k
Kotlinを用いたDSL的な設計手法と使用上の注意
kohii00
3
530
導入から5年が経って見えた Datadog APM 運用の課題
bgpat
2
540
品質が高いコードって何?Rev2.1
ickx
1
490
どうしてこうなった命名集 ~🔥編~ / OOC 2024 LT
pictiny
4
2.9k
プロンプトエンジニアリング入門
tomokusaba
2
990
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
75
4.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
225
51k
The Cost Of JavaScript in 2023
addyosmani
13
3.7k
RailsConf 2023
tenderlove
0
510
In The Pink: A Labor of Love
frogandcode
137
21k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
Large-scale JavaScript Application Architecture
addyosmani
501
110k
Product Roadmaps are Hard
iamctodd
43
9.6k
Faster Mobile Websites
deanohume
296
30k
4 Signs Your Business is Dying
shpigford
174
21k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
Fireside Chat
paigeccino
19
2.6k
Transcript
WorkManager Yoshihiro Wada a.k.a. @e10dokup 2019/1/28 at Potatotips #58
a.k.a. e10dokup CyberAgent Inc. Ameba
None
2018/12/23 - 1.0.0-beta01 2019/1/15 1.0.0-beta02 2018/12/12 - 1.0.0-alpha13 Breaking Change
Codelabs WorkManager
Android Jetpack compileSdkVersion 28 API Play Services JobScheduler/AlermManager/ FirebaseJobDispatcher etc
WorkManager
Worker WorkManager WorkRequest Worker Request WorkManager Request WorkManager WorkManager WorkRequest
extends Worker doWork() Worker.Result.success() / failure() Worker class MyWorker( context:
Context, params: WorkerParameters ) : Worker(context, params) { override fun doWork(): Worker.Result { // Կ͔͠Βͷॲཧ return Worker.Result.success() } }
Worker Data build setInputData set Worker getInputData WorkRequest // WorkerʹΛ༩͑Δ
val data = Data.Builder().putString("KEY", "VALUE").build() OneTimeWorkRequest.Builder(MyWorker::class.java) .setInputData(data) .build() // WorkerͰΛऔΓग़͢ getInputData().getString("KEY")
OneTimeWorkRequest Worker Request PeriodicWorkRequest Worker Request WorkRequest
WorkManager#enqueue WorkRequest workManager = WorkManager.getInstance() val data = Data.Builder().putString("KEY", "VALUE").build()
val request = OneTimeWorkRequest.Builder(MyWorker::class.java) .setInputData(data) .build() workManager.enqueue(request)
WorkManager#beginWith Continuation then Work Continuation#enqueue Work // AWorker -> BWorker
-> CWorkerͷॱʹ࣮ߦ͞Ε͍ͯ͘WorkContinuation val continuation = workManager.beginWith(OneTimeWorkRequest.from(AWorker::class.java)) continuation.then(OneTimeWorkRequest.from(BWorker::class.java)) continuation.then(OneTimeWorkRequest.from(CWorker::class.java)) continuation.enqueue()
WorkManager#beginUniqueWork ExistingWorkPolicy REPLACE - KEEP - APPEND - Work -
var continuation = workManager.beginUniqueWork( "unique_work_id", ExistingWorkPolicy.REPLACE, OneTimeWorkRequest.from(AWorker::class.java) )
WorkRequest Constraint Work // ͕ॆిதͰ͋Δ੍ΛՃ͑Δ val constraints = Constraints.Builder() .setRequiresCharging(true)
.build() continuation = continuation.then( OneTimeWorkRequest.Builder(AWorker::class.java) .setConstraints(constraints) .build() )
NetWorkType - BatteryNotLow - Charging - StorageNotLow - DeviceIdle -
API23 Doze Idle Work
WorkRequest tag set WorkStatus uniqueId Continuation LiveData RxJava2 -> RxWorker
1.0.0-alpha12 Codelabs 2-3