$30 off During Our Annual Pro Sale. View Details »

WorkManagerを使っていい塩梅でNotificationをする話

umakoz
March 14, 2019

 WorkManagerを使っていい塩梅でNotificationをする話

umakoz

March 14, 2019
Tweet

More Decks by umakoz

Other Decks in Technology

Transcript

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

    View Slide

  2. About me
    • LINE Fukuoka ։ൃ3ࣨ
    • അݟɹ੣ʢumami makotoʣ
    • @umakoz
    • LINE Creators Studio for Android

    !
    3°02'03"

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. OneTimeWork
    1ճ͖ΓͷTask

    View Slide

  9. 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)

    View Slide

  10. PeriodicWork
    पظతͳTask

    View Slide

  11. 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)

    View Slide

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

    View Slide

  13. ͋ͳͨͳΒͲ͏͢Δʁ

    View Slide

  14. PeriodicWork Interval 7days


    AppͷىಈͰपظ͕ζϨΔ

    View Slide

  15. PeriodicWork Interval 1day


    AppΛىಈͨ࣌͠ࠁʹTask͕࣮ߦ͞ΕΔ

    View Slide

  16. PeriodicWork Interval 1min


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

    View Slide

  17. OneTimeWork InitialDelay 1min


    ແବͳॲཧ͕ଟͯ͘ɺcode͕ෳࡶʹͳΔ

    View Slide

  18. PeriodicWork Interval 15min


    ࠷େ14෼59ඵͷζϨΛڐ༰͠ͳ͍ͱ͍͚ͳ͍

    View Slide

  19. OneTimeWork + PeriodicWork


    OneTimeWorkͰ࣌ࠁௐ੔ͯ͠PeriodicWorkΛEnqueue

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide