RxJava는 비동기로 동작하는 기능으로, 보통 코틀린에서 사용하는 예제들이 많이 나와있고
Java에서 사용하는 예제는 찾기가 어려웠다.
특정 이벤트를 수신해야 하는데 순수 콜백으로는 잘 안받아져 RxJava를 이용해 보려 했다.
예제는 폴드 기기에서 폴드상태값을 수신하는 이벤트이다.
1. gradle 항목 추가
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.x.x'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
implementation "androidx.window:window:1.1.0-alpha02"
// For Java-friendly APIs to register and unregister callbacks
implementation "androidx.window:window-java:1.1.0-alpha02"
// For RxJava2 integration
implementation "androidx.window:window-rxjava2:1.1.0-alpha02"
2. 맴버변수 추가 (메인 액티비티)
private Disposable disposable = null;
private Observable<WindowLayoutInfo> observable;
3. OnCreate 에 코드 추가
WindowInfoTracker windowInfoTracker = WindowInfoTracker.getOrCreate(메인액티비티클래스명.this);
// Create a new observable
observable = WindowInfoTrackerRx.windowLayoutInfoObservable(windowInfoTracker, 메인액티비티클래스명.this);
4. OnStart에 코드 추가
if (disposable != null) {
disposable.dispose();
} else {
//observeOn에 AndroidSchedulers.mainThread()를 넣을수도 있다.
disposable = observable.observeOn(Schedulers.io()).subscribe(windowLayoutInfo -> {
...
});
}
5. OnStop에 코드 추가
if (disposable != null) {
disposable.dispose();
}
'Android' 카테고리의 다른 글
[Fragment] Activity 에서 Fragment 호출 유의점 (Unable to instantiate fragment) (0) | 2023.01.13 |
---|---|
삼성 폴더블 기기에서 App Continuity 적용하기 (0) | 2022.06.22 |
drawerlayout 및 navigationview 사용 (0) | 2022.06.13 |
상단 Navigation의 옵션메뉴 추가 (0) | 2022.06.13 |
상단 Navigation 의 Up사용하기 (뒤로가기) (0) | 2022.06.13 |