Observable 처음 만들기 - create(), fromArray(), fromIterable()
create()
just()는 데이터를 넣으면 자동으로 알림 이벤트를 발생하지만, create()는 알림 메소드를 직접 호출해야 한다.
만드는 것만으로는 이벤트를 발행하지 않고 구독한 시점에서 값을 방출한다.
Observable< Integer > source = Observable. create (
(ObservableEmitter < Integer > emitter) -> {
emitter. onNext ( 100 );
emitter. onNext ( 200 );
emitter. onNext ( 300 );
emitter. onComplete ();
});
)
source. subscribe (System.out :: println); // 100, 200, 300
Observable이 구독 해지되었을때 콜백을 모두 해제해야 한다.(메모리 릭)
구독자가 구독하는 동안에만 onNExt, onComplete를 호출해야 한다.
에러는 오직 onError에서만 처리해야 한다.
배압을 직접 처리해야 한다.
fromArray()
배열에 들어 있는 데이터를 차례로 방출해 준다.
Integer [] arr = { 100 , 200 , 300 };
Observable< Integer > source = Observable. fromArray (arr);
source. subscribe (System.out :: println); // 100, 200, 300
int[] 배열 처리
Rxjava에서 int배열을 인식시키려면 Integer[]로 변환해야 한다.
다른 래퍼 타입에도 적용 가능하다.
int [] intArray = { 400 , 500 , 600 };
Observable< Integer > source = Observable. fromArray ( toIntegerArray (intArray));
source. subscribe (System.out.println :: );
fromIterable()
Iterator 인터페이스를 구현하는 클래스에서 객체 생성이 가능하다.
List< String > names = new ArrayList<>(); // Iterable 인터페이스 구현체
names. add ( "A" );
names. add ( "B" );
names. add ( "C" );
Observable< String > source = Observable. fromIterable (names);
source. subscribe (System.out :: prinntln)l; // A, B, C