Slide 1

Slide 1 text

Android Architecture Components $ Cooking Programmer

Slide 2

Slide 2 text

Cooking Programmer @d_forest Android Engineer Software Engineer https://prty.jp

Slide 3

Slide 3 text

Android Architecture Components

Slide 4

Slide 4 text

https://proandroiddev.com/5-common-mistakes-when-using-architecture-components-403e9899f4cb

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

https://note.mu/d_forest/n/n9c2dcf155f34

Slide 7

Slide 7 text

2

Slide 8

Slide 8 text

Fragment LiveData observer ViewModel Mutable LiveData View ViewModel

Slide 9

Slide 9 text

Fragment LiveData observer

Slide 10

Slide 10 text

class BooksFragment: Fragment() { private lateinit var viewModel: BooksViewModel override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_books, container) } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) viewModel = ViewModelProviders.of(this).get(BooksViewModel::class.java) viewModel.liveData.observe(this, Observer { updateViews(it) }) } ... }

Slide 11

Slide 11 text

class BooksFragment: Fragment() { private lateinit var viewModel: BooksViewModel override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_books, container) } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) viewModel = ViewModelProviders.of(this).get(BooksViewModel::class.java) viewModel.liveData.observe(this, Observer { updateViews(it) }) } ... }

Slide 12

Slide 12 text

viewModel.liveData.observe(this, Observer { updateViews(it) }) Activity Fragment e.g. detach onDestroy() Observer Fragment attach/detach Observer

Slide 13

Slide 13 text

viewModel.liveData.observe(viewLifecycleOwner, Observer {... public class Fragment { public LifecycleOwner getViewLifecycleOwner() }

Slide 14

Slide 14 text

class BooksFragment: Fragment() { private lateinit var viewModel: BooksViewModel override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_books, container) } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) viewModel = ViewModelProviders.of(this).get(BooksViewModel::class.java) viewModel.liveData.observe(viewLifecycleOwner, Observer { updateViews(it) }) } ... }

Slide 15

Slide 15 text

Mutable LiveData View

Slide 16

Slide 16 text

class CatalogueViewModel : ViewModel() { val products = MutableLiveData() }

Slide 17

Slide 17 text

class CatalogueViewModel : ViewModel() { val products = MutableLiveData() }

Slide 18

Slide 18 text

val products = MutableLiveData() View LiveData

Slide 19

Slide 19 text

private val promotions = MutableLiveData() fun getPromotions(): LiveData = promotions private val _offers = MutableLiveData() val offers: LiveData = _offers OR

Slide 20

Slide 20 text

class CatalogueViewModel : ViewModel() { private val _offers = MutableLiveData() val offers: LiveData = _offers }

Slide 21

Slide 21 text

THANK YOU!