We can use DelegateProxy
and DelegateProxyType
to make beautiful delegate with RxSwift. But in some other cases, we can just create a custom class with PublishSubject
.
This is how we can make rx
out of UIApplication
life cycle events
class LifeCycle {
let didEnterBackground = PublishSubject<Void>()
let willEnterForeground = PublishSubject<Void>()
let didBecomeActive = PublishSubject<Void>()
let willResignActive = PublishSubject<Void>()
init() {
let center = NotificationCenter.default
let app = UIApplication.shared
center.addObserver(forName: Notification.Name.UIApplicationDidEnterBackground,
object: app, queue: .main, using: { [weak self] _ in
self?.didEnterBackground.onNext(())
})
center.addObserver(forName: Notification.Name.UIApplicationWillEnterForeground,
object: app, queue: .main, using: { [weak self] _ in
self?.willEnterForeground.onNext(())
})
center.addObserver(forName: Notification.Name.UIApplicationDidBecomeActive,
object: app, queue: .main, using: { [weak self] _ in
self?.didBecomeActive.onNext(())
})
center.addObserver(forName: Notification.Name.UIApplicationWillResignActive,
object: app, queue: .main, using: { [weak self] _ in
self?.willResignActive.onNext(())
})
}
}
Usage
let lifeCycle = LifeCycle()
lifeCycle.didBecomeActive
.bindNext({ [weak self] in
self?.viewModel.reloadProfile()
})
.disposed(by: bag)
Top comments (2)
Keep em coming Khoa Pham :D
@Eon Hi, thanks 😇 You have good posts too