Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android Dev em 2017 - Desenvolvendo para milhões de usuários

Android Dev em 2017 - Desenvolvendo para milhões de usuários

Palestra dada no I/O Extended Porto Alegre em 28/05/2017

Angelo Castelan

May 28, 2017
Tweet

Transcript

  1. Model View Presenter • Model: entidades, repositórios e ações do

    app • View: interface passiva que mostra os dados e chama o Presenter nos comandos do usuário • Presenter: controla o model e o apresenta na view
  2. Model View ViewModel • Model: entidades, repositórios e ações do

    app • View: a UI • ViewModel: uma abstração da View com propriedades e comandos • Data Binding: sincroniza View e ViewModel
  3. RxJava • Reactive Extensions para a JVM • Gerenciamento de

    programas assíncronos e baseados em eventos usando sequências de Observables • Programação Funcional
  4. RxJava uploader.uploadFile(file)
 .flatMap { data -> entryRepository.createEntry(data) }
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())


    .subscribe({ entry -> showEntry(entry) },
 { throwable ->
 Log.e(TAG, "Erro no upload", throwable)
 showErrorMessage() })
  5. RxJava uploader.uploadFile(file)
 .flatMap { data -> entryRepository.createEntry(data) }
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())


    .subscribe({ entry -> showEntry(entry) },
 { throwable ->
 Log.e(TAG, "Erro no upload", throwable)
 showErrorMessage() })
  6. RxJava uploader.uploadFile(file)
 .flatMap { data -> entryRepository.createEntry(data) }
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())


    .subscribe({ entry -> showEntry(entry) },
 { throwable ->
 Log.e(TAG, "Erro no upload", throwable)
 showErrorMessage() })
  7. RxJava uploader.uploadFile(file)
 .flatMap { data -> entryRepository.createEntry(data) }
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())


    .subscribe({ entry -> showEntry(entry) },
 { throwable ->
 Log.e(TAG, "Erro no upload", throwable)
 showErrorMessage() })
  8. RxJava uploader.uploadFile(file)
 .flatMap { data -> entryRepository.createEntry(data) }
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())


    .subscribe({ entry -> showEntry(entry) },
 { throwable ->
 Log.e(TAG, "Erro no upload", throwable)
 showErrorMessage() })
  9. Kotlin • Moderna, divertida, madura, robusta • 100% interoperável com

    Java • Funcional • Tipagem estática e null safe • Melhor linguagem de todas
  10. Default Parameters fun sayHello(name: String = "Walter White") {
 println("Hello,

    $name!")
 } sayHello("Donald Draper")
 sayHello()
  11. Data Classes data class User(val id: Long, val username: String,

    val name: String, val followers: Long, val following: Long)