Slide 1

Slide 1 text

WorkManagerΛ࢖ͬͯ ͍͍ԘകͰ NotificationΛ͢Δ࿩ LINE Fukuoka അݟ ੣ @umakoz Android Night 2019/3

Slide 2

Slide 2 text

About me • LINE Fukuoka ։ൃ3ࣨ • അݟɹ੣ʢumami makotoʣ • @umakoz • LINE Creators Studio for Android • ! 3°02'03"

Slide 3

Slide 3 text

LINE Creators Studio • εϚʔτϑΥϯ͔ΒLINEελϯϓ͕؆୯ʹ࡞ΕΔ • ࡱͬͨࣸਅΛՃ޻ͯ͠ελϯϓʹͰ͖Δ • ελϯϓͷ৹ࠪਃ੥΍ൢച͕Ͱ͖Δ https://creator.line.me/ja/studio/

Slide 4

Slide 4 text

࢓༷ ύοέʔδͷ࡞੒్தͰΞϓϦ͕ 7೔ؒىಈ͞Εͳ͔ͬͨΒ19࣌ʹ ʮ͋ͱNݸελϯϓΛ࡞ͬͯ ύοέʔδΛਃ੥͠·ͤΜ͔ʁʯ ͱ௨஌͢Δ

Slide 5

Slide 5 text

WorkManager Background JobΛ؅ཧ͢ΔͨΊͷ Android Jetpack Component

Slide 6

Slide 6 text

WorkManager key features 1 • API 14·ͰԼҐޓ׵ੑ͕͋Δ • API 23+ͷDeviceͰ͸JobSchedulerΛ࢖͏ • API 13-22ͷDeviceͰ͸BroadcastReceiverͱ AlarmManagerΛ૊Έ߹Θͤͯ࢖͏ • Network͕࢖͑Δ͔ͱ͔Battery͕े෼͔ͳͲͷ੍໿Λ͚ͭͯ ࣮ߦͰ͖Δ

Slide 7

Slide 7 text

WorkManager key features 2 • 1ճ͖Γ΍पظతͳTaskΛScheduleͰ͖Δ • Schduleͨ͠Taskͷ؅ཧʗ؂ࢹ͕Ͱ͖Δ • TaskΛ࿈࣮݁ͯ͠ߦͰ͖Δ • ͨͱ͑App΍Device͕࠶ىಈͯ͠΋Taskͷ࣮ߦΛอূ͢Δ

Slide 8

Slide 8 text

OneTimeWork 1ճ͖ΓͷTask

Slide 9

Slide 9 text

class SomeWorker( appContext: Context, workerParams: WorkerParameters ) : Worker(appContext, workerParams) { override fun doWork(): Result { // Do the work here return Result.success() } } val request = OneTimeWorkRequest .Builder(SomeWorker::class.java) .setInitialDelay(1, TimeUnit.HOURS) .build() WorkManager.getInstance() .enqueue(request)

Slide 10

Slide 10 text

PeriodicWork पظతͳTask

Slide 11

Slide 11 text

class SomeWorker( appContext: Context, workerParams: WorkerParameters ) : Worker(appContext, workerParams) { override fun doWork(): Result { // Do the work here return Result.success() } } val request = PeriodicWorkRequest .Builder(SomeWorker::class.java, 1, TimeUnit.HOURS) .build() WorkManager.getInstance() .enqueue(request)

Slide 12

Slide 12 text

࢓༷ ύοέʔδͷ࡞੒్தͰΞϓϦ͕ 7೔ؒىಈ͞Εͳ͔ͬͨΒ19࣌ʹ ʮ͋ͱNݸελϯϓΛ࡞ͬͯ ύοέʔδΛਃ੥͠·ͤΜ͔ʁʯ ͱ௨஌͢Δ

Slide 13

Slide 13 text

͋ͳͨͳΒͲ͏͢Δʁ

Slide 14

Slide 14 text

PeriodicWork Interval 7days • ❌ AppͷىಈͰपظ͕ζϨΔ

Slide 15

Slide 15 text

PeriodicWork Interval 1day • ❌ AppΛىಈͨ࣌͠ࠁʹTask͕࣮ߦ͞ΕΔ

Slide 16

Slide 16 text

PeriodicWork Interval 1min • ❌ ͦ΋ͦ΋15෼Ҏ্ʹ͔͠IntervalΛઃఆͰ͖ͳ͍ ʢTaskͷ࠷௕࣮ߦ࣌ؒ͸10෼ʣ

Slide 17

Slide 17 text

OneTimeWork InitialDelay 1min • ❌ ແବͳॲཧ͕ଟͯ͘ɺcode͕ෳࡶʹͳΔ

Slide 18

Slide 18 text

PeriodicWork Interval 15min • ❌ ࠷େ14෼59ඵͷζϨΛڐ༰͠ͳ͍ͱ͍͚ͳ͍

Slide 19

Slide 19 text

OneTimeWork + PeriodicWork • ⭕ OneTimeWorkͰ࣌ࠁௐ੔ͯ͠PeriodicWorkΛEnqueue

Slide 20

Slide 20 text

༨ஊ ͜ͷ࢓༷͸iOSʹͱͬͯΊͬͪΌਏ͍ App΍Device͕࠶ىಈͨ͠Β Taskͷ࣮ߦΛอূͰ͖ͳ͍

Slide 21

Slide 21 text

݁࿦ ࢓༷ʹΑͬͯ͸ WorkManagerΛ࢖ͬͯ΋ ׂͱ͠ΜͲ͍

Slide 22

Slide 22 text

LINE͸ Android EngineerΛ ืू͍ͯ͠·͢!!!!!