Skip to content

Instantly share code, notes, and snippets.

@mg6maciej
Last active April 5, 2018 08:45
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mg6maciej/ac89cd73b0768a4ac91dd8ebe1e37e10 to your computer and use it in GitHub Desktop.
Save mg6maciej/ac89cd73b0768a4ac91dd8ebe1e37e10 to your computer and use it in GitHub Desktop.
disposeOnDestroy
import android.app.Activity
import android.app.Application
import android.os.Bundle
import io.reactivex.disposables.Disposable
import io.reactivex.functions.Consumer
fun Activity.disposeOnDestroy() = Consumer<Disposable> { disposable ->
application.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
override fun onActivityDestroyed(activity: Activity) {
if (this@disposeOnDestroy === activity) {
application.unregisterActivityLifecycleCallbacks(this)
disposable.dispose()
}
}
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) = Unit
override fun onActivityStarted(activity: Activity) = Unit
override fun onActivityResumed(activity: Activity) = Unit
override fun onActivityPaused(activity: Activity) = Unit
override fun onActivityStopped(activity: Activity) = Unit
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) = Unit
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment