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

AndroidXに潜む便利なヤツら

 AndroidXに潜む便利なヤツら

Takuji Nishibayashi

April 19, 2019
Tweet

More Decks by Takuji Nishibayashi

Other Decks in Technology

Transcript

  1. AndroidXʹજΉศརͦ͏ͳϠπΒ
    @takuji31
    Mobile Act KYOTO #1

    View Slide

  2. ࣗݾ঺հ

    View Slide

  3. ࣗݾ঺հ
    • @takuji31 id:takuji31
    • Takuji Nishibayashi
    • Hatena Co., Ltd.
    • App Team
    • ίϛοΫDAYS
    • δϟϯϓϧʔΩʔʂ
    • ΧΫϤϜ

    View Slide

  4. ࣗݾ঺հ
    • Android
    • Kotlin
    • Flu-er

    !
    h-ps:/
    /blog.takuji31.jp

    "
    h-ps:/
    /nazuna.takuji31.jp

    # $
    h-ps:/
    /photo.takuji31.jp

    View Slide

  5. AndroidX

    View Slide

  6. LiveData?
    ViewModel?
    AppCompat?
    Naviga5on

    View Slide

  7. ࢖ͬͯ·͢ΑͶ

    View Slide

  8. ศརͳ΍ͭ৭ʑ঺հ͠·͢

    View Slide

  9. α൛ͷ΋ͷ΋ؚ·ΕΔͷͰ
    ͝ར༻͸ܭըతʹ

    View Slide

  10. ଞʹ΋͍͍΋ͷ͋ͬͨΒ
    ڭ͍͑ͯͩ͘͞ʂ

    View Slide

  11. androidx.ac*vity
    androidx.fragment

    View Slide

  12. ComponentActivity.viewModels{}
    Fragment.viewModels{}
    Fragment.activityViewModels{}

    View Slide

  13. ViewModelΛऔಘͰ͖Δ
    Delegated property

    View Slide

  14. viewModels ͸Ҿ਺Ͱ
    ViewModelStoreOwnerΛ୳͢
    blockΛ౉ͤΔ

    View Slide

  15. valʹͰ͖Δ

    View Slide

  16. Goodbye!
    private lateinit var

    View Slide

  17. @ContentView

    View Slide

  18. ComponentAc*vity ͱ Fragmentʹ
    secondory constructor͕௥Ճ

    View Slide

  19. constructorͷҾ਺ʹLayoutͷIDΛ
    ౉ͤΔ

    View Slide

  20. Goodbye setContentView()

    View Slide

  21. DataBinding͸bind͢Ε͹Αͦ͞͏

    View Slide

  22. androidx.lifecycle

    View Slide

  23. ViewModelͱ͔LiveDataͱ͔ೖͬͯ
    ΔΞϨ

    View Slide

  24. ViewModel.viewModelScope

    View Slide

  25. ViewModelͷCorou,neScope

    View Slide

  26. Context͸
    Dispatchers.Main + Job

    View Slide

  27. onCleared() ͰΩϟϯηϧ

    View Slide

  28. Saved State

    View Slide

  29. ViewModel͸ը໘ճసΛੜ͖࢒Δ

    View Slide

  30. Ac#vity͕ϝϞϦʔ͔Β
    ഁغ͞ΕΔ࣌͸ࢮ͵

    View Slide

  31. SavedStateHandler
    Ͱঢ়ଶΛ෮ݩͰ͖Δ

    View Slide

  32. γϯϓϧͳ
    set/get/remove/contains

    View Slide

  33. getLiveData()

    View Slide

  34. see. h&ps:/
    /developer.android.com/
    topic/libraries/architecture/
    viewmodel-savedstate

    View Slide

  35. androidx.navigation

    View Slide

  36. Naviga&onͷΞϨ

    View Slide

  37. androidx.navigation.safeargs
    androidx.navigation.safeargs.kotlin

    View Slide

  38. Naviga&onͷxmlʹఆٛͨ͠ભҠઌ
    ͷargsΛࣗಈੜ੒

    View Slide

  39. Kotlinίʔυੜ੒Մೳ

    View Slide

  40. Goodbye createIntent()
    methods!

    View Slide

  41. Naviga&onͰը໘ભҠ͠ͳͯ͘΋࢖
    ͑Δ

    View Slide

  42. ·ͣ͸࢖ͬͯΈͯʂ

    View Slide

  43. Fragment.navGraphViewModels()

    View Slide

  44. ࢦఆͨ͠Naviga&onͷgraphͰੜ͖
    ࢒ΔFragment

    View Slide

  45. NavHostFragment಺ͷFragment಺
    Ͱ࢖͏ɺΈ͍ͨͳײ͡ͷ࣌ʹ࢖͑ͦ
    ͏

    View Slide

  46. ͜Εॻ͍ͯͯࠓ࣮૷ͯ͠Δը໘Ͱ࢖
    ͑ͦ͏ͱࢥͬͨͷͰ࢖͏༧ఆ

    View Slide

  47. h"ps:/
    /developer.android.com/
    jetpack/androidx

    View Slide