6. GDGFoz
RxJava
• RxJava - Reactive Extensions para a JVM - uma
biblioteca para compor programas assíncronos e
baseados em eventos usando sequências
observáveis.
• Netflix
• 1.0.0 em 18 Nov 2014
• 2.0.0 em 28 Out 2016
13. GDGFoz
Model/View/Presenter
// View contract
interface RepositoriesContract{
interface View{
fun setRepositories(repositories: List<Repository>)
}
}
// Activity/Fragment
class RepositoriesActivity : AppCompatActivity(), RepositoriesContract.View {
...
// Passing the View to Presenter
presenter = RepositoriesPresenter(this)
override fun setRepositories(repositories: List<Repository>) {
// Setting data to view
}
14. GDGFoz
Model/View/Presenter
// Presenter contract
interface RepositoriesContract {
interface Presenter {
fun getAllRepositories()
}
}
// Passing View to Presenter
class RepositoriesPresenter(val view: RepositoriesContract.View): RepositoriesContract.Presenter
lateinit var model: RepositoryModel
override fun getAllRepositories() {
// Call model and set data to View
// Can be RxJava
var repositories:List<Repository> = model.getAllRepositories()
view.setRepositories(repositories)
}
24. GDGFoz
Save states
// Save
override fun onSaveInstanceState(state: Bundle?) {
super.onSaveInstanceState(state)
//Can create Bundle here
state.putAll(viewModel.getState())
}
// Restore
override fun onRestoreInstanceState(bundle: Bundle) {
super.onRestoreInstanceState(bundle)
viewModel.restoreState(bundle)
}