Java 类io.reactivex.subjects.AsyncSubject 实例源码
项目:Learning-RxJava
文件:Ch5_25.java
public static void main(String[] args) {
Subject<String> subject =
AsyncSubject.create();
subject.subscribe(s ->
System.out.println("Observer 1: " + s),
Throwable::printStackTrace,
() -> System.out.println("Observer 1 done!")
);
subject.onNext("Alpha");
subject.onNext("Beta");
subject.onNext("Gamma");
subject.onComplete();
subject.subscribe(s ->
System.out.println("Observer 2: " + s),
Throwable::printStackTrace,
() -> System.out.println("Observer 2 done!")
);
}
项目:RxJava2-Android-Sample
文件:AsyncSubjectExampleActivity.java
private void doSomeWork(int type) {
AsyncSubject<Integer> source = AsyncSubject.create();
source.subscribe(getFirstObserver()); // it will emit only 4 and onComplete
source.onNext(1);
source.onNext(2);
source.onNext(3);
/*
* it will emit 4 and onComplete for second observer also.
*/
source.subscribe(getSecondObserver());
source.onNext(4);
if (type==COMPLETE){
source.onComplete();
}
if (type==ERROR){
source.onError(new Exception("test send onError"));
}
}
项目:webtrekk-android-sdk
文件:PermissionRequest.java
/**main function request for permission. If Completable completes permission is granted.
* Otherwise error is emitted.
*/
public List<Completable> requestPermission(@NotNull Activity activity, @NotNull String permissions[]) {
List<Completable> completables = new ArrayList<>();
List<String> permissionsResult = new ArrayList<>();
for (String permission: permissions) {
AsyncSubject<Void> observable = AsyncSubject.create();
if (ContextCompat.checkSelfPermission(activity, permission)
!= PackageManager.PERMISSION_GRANTED) {
permissionsResult.add(permission);
observables.put(permission, observable);
completables.add(Completable.fromObservable(observable));
} else {
completables.add(Completable.complete());
}
}
ActivityCompat.requestPermissions(activity,
permissionsResult.toArray(new String[permissionsResult.size()]), PERMISSION_REQUEST);
return completables;
}
项目:webtrekk-android-sdk
文件:PermissionRequest.java
public void processResponse(int requestCode,
@NotNull String permissions[], @NotNull int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST: {
for (int i = 0; i< grantResults.length; i++){
final AsyncSubject<Void> observable = observables.get(permissions[i]);
if (observable == null){
continue;
}
if (grantResults[i] == PackageManager.PERMISSION_GRANTED){
observable.onComplete();
} else {
observable.onError(new SecurityException());
}
}
}
}
}
项目:durian-rx
文件:RxAndListenableFutureSemantics.java
@Test
public void testAsyncSubjectSubscribeAfterComplete() {
// create an async subject, subscribe pre, and pump test through
AsyncSubject<String> testSubject = AsyncSubject.create();
RxAsserter<String> preObserver = RxAsserter.on(testSubject);
testSubject.onNext("test");
// make sure that no one has observed anything yet
preObserver.assertValues();
// when the subject completes, pre should observe but not post
testSubject.onComplete();
preObserver.assertValues("test");
// and if we subscribe after the fact, everyone should get it
RxAsserter<String> postObserver = RxAsserter.on(testSubject);
preObserver.assertValues("test");
postObserver.assertValues("test");
}
项目:Reactive-Programming-With-Java-9
文件:Demo_AsyncSubject.java
public static void main(String[] args) {
// TODO Auto-generated method stub
AsyncSubject<Long> asyncSubject=AsyncSubject.create();
asyncSubject.subscribe(new Observer<Long>() {
@Override
public void onComplete() {
// TODO Auto-generated method stub
System.out.println("It's Done");
}
@Override
public void onError(Throwable throwable) {
// TODO Auto-generated method stub
throwable.printStackTrace();
}
@Override
public void onNext(Long value) {
// TODO Auto-generated method stub
System.out.println(":"+value);
}
@Override
public void onSubscribe(Disposable disposable) {
// TODO Auto-generated method stub
System.out.println("onSubscribe");
}
});
asyncSubject.onNext(1L);
asyncSubject.onNext(2L);
asyncSubject.onNext(10L);
asyncSubject.onComplete();
}
项目:RxJava2Jdk8Interop
文件:ObservableInterop.java
/**
* Create a Observable that signals the terminal value or error of the given
* CompletionStage.
* <p>Cancelling the Observable subscription doesn't cancel the CompletionStage.
* @param <T> the value type
* @param cs the CompletionStage instance
* @return the new Observable instance
*/
public static <T> Observable<T> fromFuture(CompletionStage<T> cs) {
AsyncSubject<T> ap = AsyncSubject.create();
cs.whenComplete((v, e) -> {
if (e != null) {
ap.onError(e);
} else {
ap.onNext(v);
ap.onComplete();
}
});
return ap;
}
项目:GitHub
文件:AsyncSubjectExampleActivity.java
private void doSomeWork() {
AsyncSubject<Integer> source = AsyncSubject.create();
source.subscribe(getFirstObserver()); // it will emit only 4 and onComplete
source.onNext(1);
source.onNext(2);
source.onNext(3);
/*
* it will emit 4 and onComplete for second observer also.
*/
source.subscribe(getSecondObserver());
source.onNext(4);
source.onComplete();
}
项目:RxJava2-Android-Samples
文件:AsyncSubjectExampleActivity.java
private void doSomeWork() {
AsyncSubject<Integer> source = AsyncSubject.create();
source.subscribe(getFirstObserver()); // it will emit only 4 and onComplete
source.onNext(1);
source.onNext(2);
source.onNext(3);
/*
* it will emit 4 and onComplete for second observer also.
*/
source.subscribe(getSecondObserver());
source.onNext(4);
source.onComplete();
}
项目:Reactive-Android-Programming
文件:Sandbox.java
private static void demo5() throws InterruptedException {
Subject<String> subject = AsyncSubject.create();
Observable.interval(0, 1, TimeUnit.SECONDS)
.take(4)
.map(Objects::toString)
.subscribe(subject);
subject.subscribe(v -> log(v));
Thread.sleep(5100);
subject.subscribe(v -> log(v));
}