0.00
0 читателей, 1 топик

Android, rxJava. Подписка на уход приложения в background и возвращение обратно

Актуально для приложений с несколькими Activity, когда надо отслеживать уход всего приложения в background и возвращение обратно

Код на Kotlin, но все достаточно прозрачно. На Java будет так же.

class MyApplication: Application() {
    companion object {
        val onForeground: PublishSubject<Boolean> = PublishSubject.create()      //Отсюда получаем true/false в зависимости от состояния приложения
        val stateSubscription: PublishSubject<Boolean> = PublishSubject.create() //Сюда пихаем true/false от своих Activity
        private var currentState = false
    }
 
    override fun onCreate() {
        super.onCreate()
        stateSubscription.debounce(2, TimeUnit.SECONDS).filter { b -> b != currentState }.subscribe { b -> currentState = b;onForeground.onNext(b) }
    }
}
 
class MyActivity:: AppCompatActivity() {
    override fun onResume() {
        super.onResume()
        MyApplication.currentActivity.onNext(true)
    }
    override fun onPause() {
        super.onPause()
        MyApplication.currentActivity.onNext(false)
    } 
}
 

Собственно вместо true/false в onResume/onPause никто не мешает пихать this/null