java类rx.subscriptions.Subscriptions的实例源码

RxFirebaseDatabase.java 文件源码 项目:Attendance 阅读 29 收藏 0 点赞 0 评论 0
/**
 * This methods observes a firebase query and returns back ONCE
 * an Observable of the {@link DataSnapshot}
 * when the firebase client uses a {@link ValueEventListener}
 *
 * @param firebaseRef {@link Query} this is reference of a Firebase Query
 * @return an {@link rx.Observable} of datasnapshot to use
 */
public Observable<DataSnapshot> observeSingleValue(final Query firebaseRef) {
  return Observable.create(new Observable.OnSubscribe<DataSnapshot>() {
    @Override public void call(final Subscriber<? super DataSnapshot> subscriber) {
      final ValueEventListener listener = new ValueEventListener() {
        @Override public void onDataChange(DataSnapshot dataSnapshot) {
          subscriber.onNext(dataSnapshot);
          subscriber.onCompleted();
        }

        @Override public void onCancelled(DatabaseError error) {
          FirebaseDatabaseErrorFactory.buildError(subscriber, error);
        }
      };

      firebaseRef.addListenerForSingleValueEvent(listener);

      // When the subscription is cancelled, remove the listener
      subscriber.add(Subscriptions.create(new Action0() {
        @Override public void call() {
          firebaseRef.removeEventListener(listener);
        }
      }));
    }
  }).compose(this.<DataSnapshot>applyScheduler());
}
RxFirebaseAuth.java 文件源码 项目:Attendance 阅读 29 收藏 0 点赞 0 评论 0
/**
 * Observes the authentication state for {@link com.google.firebase.auth.FirebaseAuth}
 *
 * @return {@link rx.Observable} of {@link com.google.firebase.auth.FirebaseUser}
 */
public Observable<FirebaseUser> observeAuthState() {
  return Observable.create(new Observable.OnSubscribe<FirebaseUser>() {
    @Override public void call(final Subscriber<? super FirebaseUser> subscriber) {
      final AuthStateListener authStateListener = new AuthStateListener() {
        @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
          FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
          if (firebaseUser == null) {
            FirebaseAuthErrorFactory.createSignOutError(subscriber);
          } else {
            subscriber.onNext(firebaseUser);
          }
        }
      };
      firebaseAuth.addAuthStateListener(authStateListener);
      subscriber.add(Subscriptions.create(new Action0() {
        @Override public void call() {
          firebaseAuth.removeAuthStateListener(authStateListener);
        }
      }));
    }
  });
}
RxNetworkReceiver.java 文件源码 项目:rx-network-listener 阅读 19 收藏 0 点赞 0 评论 0
@Override
public void call(final Subscriber<? super Intent> subscriber) {
    final BroadcastReceiver broadCastReceiver=new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            subscriber.onNext(intent);
        }
    };
    final Subscription subscription= Subscriptions.create(new Action0() {
        @Override
        public void call() {
            context.unregisterReceiver(broadCastReceiver);

        }
    });
    subscriber.add(subscription);
    context.registerReceiver(broadCastReceiver, intentFilter, permission, schedulerHandler);
}
RxConnectivityState.java 文件源码 项目:RxConnectivityState 阅读 16 收藏 0 点赞 0 评论 0
private Subscription unsubscribeInUiThread(final Action0 unsubscribe) {
    return Subscriptions.create(new Action0() {

        @Override public void call() {
            if (Looper.getMainLooper() == Looper.myLooper()) {
                unsubscribe.call();
            } else {
                final Scheduler.Worker inner = AndroidSchedulers.mainThread().createWorker();
                inner.schedule(new Action0() {
                    @Override public void call() {
                        unsubscribe.call();
                        inner.unsubscribe();
                    }
                });
            }
        }
    });
}
PreferencesService.java 文件源码 项目:mdx 阅读 27 收藏 0 点赞 0 评论 0
@Inject
public PreferencesService(@ApplicationContext Context context) {
    mPrefs = context.getSharedPreferences(PREFS_FILE_NAME, Context.MODE_PRIVATE);

    mChangedKeys = Observable.create(new Observable.OnSubscribe<String>() {
        @Override
        public void call(final Subscriber<? super String> subscriber) {
            final OnSharedPreferenceChangeListener listener = new OnSharedPreferenceChangeListener() {
                @Override
                public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
                    subscriber.onNext(key);
                }
            };

            Subscription subscription = Subscriptions.create(new Action0() {
                @Override public void call() {
                    mPrefs.unregisterOnSharedPreferenceChangeListener(listener);
                }
            });
            subscriber.add(subscription);

            mPrefs.registerOnSharedPreferenceChangeListener(listener);
        }
    }).share();
}
GenericDialogs.java 文件源码 项目:aptoide-client-v8 阅读 15 收藏 0 点赞 0 评论 0
/**
 * Show an AlertDialog with the {@code title} and the {@code message}. The Alert dialog has an
 * "yes" button and a "no" button.
 *
 * @param title Title to apply on AlertDialog
 * @param message Message to asSnack on AlertDialog
 *
 * @return A Observable that shows the dialog when subscribed and return the action made by
 * user. This action is represented by EResponse
 *
 * @see EResponse
 */
public static Observable<EResponse> createGenericYesNoCancelMessage(@NonNull Context context,
    @Nullable String title, @Nullable String message) {
  return Observable.create((Subscriber<? super EResponse> subscriber) -> {
    final AlertDialog dialog = new AlertDialog.Builder(context).setTitle(title)
        .setMessage(message)
        .setPositiveButton(android.R.string.yes, (listener, which) -> {
          subscriber.onNext(EResponse.YES);
          subscriber.onCompleted();
        })
        .setNegativeButton(android.R.string.no, (listener, which) -> {
          subscriber.onNext(EResponse.NO);
          subscriber.onCompleted();
        })
        .setOnCancelListener(listener -> {
          subscriber.onNext(EResponse.CANCEL);
          subscriber.onCompleted();
        })
        .create();
    // cleaning up
    subscriber.add(Subscriptions.create(() -> dialog.dismiss()));
    dialog.show();
  })
      .subscribeOn(AndroidSchedulers.mainThread());
}
GenericDialogs.java 文件源码 项目:aptoide-client-v8 阅读 17 收藏 0 点赞 0 评论 0
/**
 * Show an AlertDialog with the {@code title} and the {@code message}. The Alert dialog has an
 * "ok" button.
 *
 * @param title Title to apply on AlertDialog
 * @param message Message to asSnack on AlertDialog
 *
 * @return A Observable that shows the dialog when subscribed and return the action made by
 * user. This action is represented by EResponse
 *
 * @see EResponse
 */
public static Observable<EResponse> createGenericOkCancelMessage(Context context, String title,
    String message) {
  return Observable.create((Subscriber<? super EResponse> subscriber) -> {
    final AlertDialog dialog = new AlertDialog.Builder(context).setTitle(title)
        .setMessage(message)
        .setPositiveButton(android.R.string.ok, (listener, which) -> {
          subscriber.onNext(EResponse.YES);
          subscriber.onCompleted();
        })
        .setNegativeButton(android.R.string.cancel, (dialogInterface, i) -> {
          subscriber.onNext(EResponse.CANCEL);
          subscriber.onCompleted();
        })
        .create();
    // cleaning up
    subscriber.add(Subscriptions.create(() -> dialog.dismiss()));
    dialog.show();
  });
}
GenericDialogs.java 文件源码 项目:aptoide-client-v8 阅读 20 收藏 0 点赞 0 评论 0
public static Observable<EResponse> createGenericContinueMessage(Context context,
    @Nullable View view, String title, String message, @StringRes int buttonText) {
  return Observable.create((Subscriber<? super EResponse> subscriber) -> {
    AlertDialog.Builder builder = new AlertDialog.Builder(context).setTitle(title)
        .setMessage(message)
        .setPositiveButton(buttonText, (dialogInterface, i) -> {
          subscriber.onNext(EResponse.YES);
          subscriber.onCompleted();
        });
    if (view != null) {
      builder.setView(view);
    }
    AlertDialog alertDialog = builder.create();
    subscriber.add(Subscriptions.create(() -> alertDialog.dismiss()));
    alertDialog.show();
  });
}
GenericDialogs.java 文件源码 项目:aptoide-client-v8 阅读 32 收藏 0 点赞 0 评论 0
public static Observable<EResponse> createGenericContinueCancelMessage(Context context,
    String title, String message) {
  return Observable.create((Subscriber<? super EResponse> subscriber) -> {
    final AlertDialog ad = new AlertDialog.Builder(context).setTitle(title)
        .setMessage(message)
        .setPositiveButton(android.R.string.ok, (dialog, which) -> {
          subscriber.onNext(EResponse.YES);
          subscriber.onCompleted();
        })
        .setNegativeButton(android.R.string.cancel, (dialogInterface, i) -> {
          subscriber.onNext(EResponse.NO);
          subscriber.onCompleted();
        })
        .setOnCancelListener(dialog -> {
          subscriber.onNext(EResponse.CANCEL);
          subscriber.onCompleted();
        })
        .create();
    // cleaning up
    subscriber.add(Subscriptions.create(() -> ad.dismiss()));
    ad.show();
  });
}
GenericDialogs.java 文件源码 项目:aptoide-client-v8 阅读 17 收藏 0 点赞 0 评论 0
public static Observable<EResponse> createGenericOkCancelMessage(Context context, String title,
    @StringRes int message, @StringRes int okMessage, @StringRes int cancelMessage) {
  return Observable.create((Subscriber<? super EResponse> subscriber) -> {
    final AlertDialog ad = new AlertDialog.Builder(context).setTitle(title)
        .setMessage(message)
        .setPositiveButton(okMessage, (dialog, which) -> {
          subscriber.onNext(EResponse.YES);
          subscriber.onCompleted();
        })
        .setNegativeButton(cancelMessage, (dialogInterface, i) -> {
          subscriber.onNext(EResponse.NO);
          subscriber.onCompleted();
        })
        .setOnCancelListener(dialog -> {
          subscriber.onNext(EResponse.CANCEL);
          subscriber.onCompleted();
        })
        .create();
    // cleaning up
    subscriber.add(Subscriptions.create(() -> ad.dismiss()));
    ad.show();
  });
}


问题


面经


文章

微信
公众号

扫码关注公众号