Skip to content

Commit

Permalink
Add lifecycle events to activity/presenters
Browse files Browse the repository at this point in the history
  • Loading branch information
Serchinastico committed Jan 30, 2019
1 parent 90e51ee commit e8cf389
Show file tree
Hide file tree
Showing 8 changed files with 33 additions and 36 deletions.
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ dependencies {
implementation "androidx.appcompat:appcompat:1.0.2"
implementation "androidx.constraintlayout:constraintlayout:2.0.0-alpha3"
implementation "androidx.recyclerview:recyclerview:1.0.0"
implementation "androidx.lifecycle:lifecycle-runtime:2.0.0"

/* Coroutines */
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.karumi.jetpack.superheroes.ui.presenter

import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import androidx.lifecycle.Lifecycle.Event.ON_RESUME
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import com.karumi.jetpack.superheroes.common.async
import com.karumi.jetpack.superheroes.common.weak
import com.karumi.jetpack.superheroes.domain.model.SuperHero
Expand All @@ -14,7 +18,7 @@ class EditSuperHeroPresenter(
view: View,
private val getSuperHeroById: GetSuperHeroById,
private val saveSuperHero: SaveSuperHero
) : CoroutineScope by MainScope() {
) : LifecycleObserver, CoroutineScope by MainScope() {

private val view: View? by weak(view)
private lateinit var id: String
Expand All @@ -28,11 +32,13 @@ class EditSuperHeroPresenter(
}
}

@OnLifecycleEvent(ON_RESUME)
fun onResume() {
view?.showLoading()
refreshSuperHero()
}

@OnLifecycleEvent(ON_DESTROY)
fun onDestroy() {
cancel()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.karumi.jetpack.superheroes.ui.presenter

import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import androidx.lifecycle.Lifecycle.Event.ON_RESUME
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import com.karumi.jetpack.superheroes.common.async
import com.karumi.jetpack.superheroes.common.weak
import com.karumi.jetpack.superheroes.domain.model.SuperHero
Expand All @@ -12,7 +16,7 @@ import kotlinx.coroutines.launch
class SuperHeroDetailPresenter(
view: View,
private val getSuperHeroById: GetSuperHeroById
) : CoroutineScope by MainScope() {
) : LifecycleObserver, CoroutineScope by MainScope() {

private val view: View? by weak(view)

Expand All @@ -26,11 +30,13 @@ class SuperHeroDetailPresenter(
}
}

@OnLifecycleEvent(ON_RESUME)
fun onResume() {
view?.showLoading()
refreshSuperHero()
}

@OnLifecycleEvent(ON_DESTROY)
fun onDestroy() {
cancel()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.karumi.jetpack.superheroes.ui.presenter

import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import androidx.lifecycle.Lifecycle.Event.ON_RESUME
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import com.karumi.jetpack.superheroes.common.async
import com.karumi.jetpack.superheroes.common.weak
import com.karumi.jetpack.superheroes.domain.model.SuperHero
Expand All @@ -12,17 +16,19 @@ import kotlinx.coroutines.launch
class SuperHeroesPresenter(
view: View,
private val getSuperHeroes: GetSuperHeroes
) : CoroutineScope by MainScope() {
) : LifecycleObserver, CoroutineScope by MainScope() {

private val view: View? by weak(
view
)

@OnLifecycleEvent(ON_RESUME)
fun onResume() {
view?.showLoading()
refreshSuperHeroes()
}

@OnLifecycleEvent(ON_DESTROY)
fun onDestroy() {
cancel()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.lifecycle.LifecycleObserver
import org.kodein.di.Kodein
import org.kodein.di.KodeinAware
import org.kodein.di.android.closestKodein
Expand All @@ -15,16 +16,23 @@ abstract class BaseActivity : AppCompatActivity(), KodeinAware {
extend(appKodein)
import(activityModules)
}
abstract val presenter: LifecycleObserver
abstract val layoutId: Int
abstract val toolbarView: Toolbar
abstract val activityModules: Kodein.Module

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycle.addObserver(presenter)
setContentView(layoutId)
setSupportActionBar(toolbarView)
preparePresenter(intent)
}

override fun onDestroy() {
super.onDestroy()
lifecycle.removeObserver(presenter)
}

open fun preparePresenter(intent: Intent?) {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class EditSuperHeroActivity : BaseActivity(), EditSuperHeroPresenter.View {
}
}

private val presenter: EditSuperHeroPresenter by instance()
override val presenter: EditSuperHeroPresenter by instance()
override val layoutId = R.layout.edit_super_hero_activity
override val toolbarView: Toolbar
get() = toolbar
Expand All @@ -46,16 +46,6 @@ class EditSuperHeroActivity : BaseActivity(), EditSuperHeroPresenter.View {
}
}

override fun onResume() {
super.onResume()
presenter.onResume()
}

override fun onDestroy() {
super.onDestroy()
presenter.onDestroy()
}

override fun preparePresenter(intent: Intent?) {
title = superHeroId
presenter.preparePresenter(superHeroId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import org.kodein.di.erased.provider

class MainActivity : BaseActivity(), SuperHeroesPresenter.View {

private val presenter: SuperHeroesPresenter by instance()
override val presenter: SuperHeroesPresenter by instance()
private lateinit var adapter: SuperHeroesAdapter
override val layoutId: Int = R.layout.main_activity
override val toolbarView: Toolbar
Expand All @@ -29,16 +29,6 @@ class MainActivity : BaseActivity(), SuperHeroesPresenter.View {
initializeRecyclerView()
}

override fun onResume() {
super.onResume()
presenter.onResume()
}

override fun onDestroy() {
super.onDestroy()
presenter.onDestroy()
}

private fun initializeAdapter() {
adapter = SuperHeroesAdapter(presenter)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class SuperHeroDetailActivity : BaseActivity(), SuperHeroDetailPresenter.View {
}
}

private val presenter: SuperHeroDetailPresenter by instance()
override val presenter: SuperHeroDetailPresenter by instance()
override val layoutId: Int = R.layout.super_hero_detail_activity
override val toolbarView: Toolbar
get() = toolbar
Expand All @@ -40,16 +40,6 @@ class SuperHeroDetailActivity : BaseActivity(), SuperHeroDetailPresenter.View {
edit_super_hero.setOnClickListener { presenter.onEditSelected() }
}

override fun onResume() {
super.onResume()
presenter.onResume()
}

override fun onDestroy() {
super.onDestroy()
presenter.onDestroy()
}

override fun preparePresenter(intent: Intent?) {
title = superHeroId
presenter.preparePresenter(superHeroId)
Expand Down

0 comments on commit e8cf389

Please sign in to comment.