Skip to content

Instantly share code, notes, and snippets.

@ZakTaccardi
Created December 13, 2016 15:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ZakTaccardi/dac635d6943643980b1b251f130f7c12 to your computer and use it in GitHub Desktop.
Save ZakTaccardi/dac635d6943643980b1b251f130f7c12 to your computer and use it in GitHub Desktop.
RxActivity
/**
* Observe the activity events!
*/
class RxActivityDelegate : RxActivity {
private val relay = BehaviorRelay.create<ActivityLifecycleEvent>().toSerialized()
fun onCreate() {
relay.call(CREATE)
log("onCreate")
}
fun onStart() {
relay.call(START)
log("onStart")
}
fun onResume() {
relay.call(RESUME)
log("onResume")
}
fun onStop() {
relay.call(STOP)
log("onStop")
}
fun onPause() {
relay.call(PAUSE)
log("onPause")
}
fun onDestroy() {
relay.call(DESTROY)
log("onDestroy")
}
override fun observe(): Observable<ActivityLifecycleEvent> {
return relay.asObservable()
.doOnNext { Timber.d("emitted ${it.name}") }
}
private fun log(lifecycleMethod: String) {
Timber.d("$this: $lifecycleMethod")
}
}
interface RxActivity {
fun observe(): Observable<ActivityLifecycleEvent>
}
/**
* Lifecycle event
*/
enum class ActivityLifecycleEvent(
val isCreated: Boolean,
val isStarted: Boolean,
val isResumed: Boolean
) {
CREATE(
isCreated = true,
isStarted = false,
isResumed = false
),
START(
isCreated = true,
isStarted = true,
isResumed = false
),
RESUME(
isCreated = true,
isStarted = true,
isResumed = true
),
PAUSE(
isCreated = true,
isStarted = true,
isResumed = false
),
STOP(
isCreated = true,
isStarted = false,
isResumed = false
),
DESTROY(
isCreated = false,
isStarted = false,
isResumed = false
);
fun isDestroyed(): Boolean {
return this == DESTROY
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment