下面列出了io.reactivex.android.plugins.RxAndroidPlugins#setInitMainThreadSchedulerHandler ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void setUpRxPlugin() {
Scheduler asyncMainThreadScheduler = AndroidSchedulers.from(Looper.getMainLooper(), true);
RxAndroidPlugins.setInitMainThreadSchedulerHandler(schedulerCallable -> asyncMainThreadScheduler);
RxJavaPlugins.setErrorHandler(e -> {
if (e instanceof UndeliverableException) {
e = e.getCause();
}
if ((e instanceof IOException) || (e instanceof SocketException)) {
return;
}
if ((e instanceof NullPointerException) || (e instanceof IllegalArgumentException)) {
Timber.d("Error in app");
Thread.currentThread().getUncaughtExceptionHandler()
.uncaughtException(Thread.currentThread(),e);
}
if (e instanceof IllegalStateException) {
Timber.d("Error in RxJava");
Thread.currentThread().getUncaughtExceptionHandler()
.uncaughtException(Thread.currentThread(),e);
}
Timber.d(e);
});
}
@Override
public Statement apply(final Statement base, Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
RxAndroidPlugins.setMainThreadSchedulerHandler(scheduler -> Schedulers.trampoline());
RxAndroidPlugins.setInitMainThreadSchedulerHandler(schedulerCallable -> Schedulers.trampoline());
try {
base.evaluate();
} finally {
RxJavaPlugins.reset();
RxAndroidPlugins.reset();
}
}
};
}
@Override
protected void starting(Description description) {
if (restoreHandlers) {
// https://github.com/ReactiveX/RxAndroid/pull/358
// originalInitMainThreadInitHandler =
// RxAndroidPlugins.getInitMainThreadScheduler();
// originalMainThreadHandler = RxAndroidPlugins.getMainThreadScheduler();
}
RxAndroidPlugins.reset();
RxAndroidPlugins.setInitMainThreadSchedulerHandler(
new Function<Callable<Scheduler>, Scheduler>() {
@Override
public Scheduler apply(Callable<Scheduler> schedulerCallable) throws Exception {
return delegatingMainThreadScheduler;
}
});
RxAndroidPlugins.setMainThreadSchedulerHandler(
new Function<Scheduler, Scheduler>() {
@Override
public Scheduler apply(Scheduler scheduler) throws Exception {
return delegatingMainThreadScheduler;
}
});
}
@BeforeClass
public static void setupRxJavaPlugins() {
RxJavaPlugins.setIoSchedulerHandler(new Function<Scheduler, Scheduler>() {
@Override
public Scheduler apply(Scheduler scheduler) throws Exception {
return Schedulers.trampoline();
}
});
RxAndroidPlugins.setInitMainThreadSchedulerHandler(new Function<Callable<Scheduler>, Scheduler>() {
@Override
public Scheduler apply(Callable<Scheduler> schedulerCallable) throws Exception {
return Schedulers.trampoline();
}
});
}
@BeforeClass
public static void setupClass() {
RxAndroidPlugins.setInitMainThreadSchedulerHandler(new Function<Callable<Scheduler>, Scheduler>() {
@Override
public Scheduler apply(Callable<Scheduler> schedulerCallable) throws Exception {
return Schedulers.trampoline();
}
});
RxJavaPlugins.setIoSchedulerHandler(new Function<Scheduler, Scheduler>() {
@Override
public Scheduler apply(Scheduler scheduler) throws Exception {
return Schedulers.trampoline();
}
});
}
public Statement apply(Statement base, Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
Scheduler scheduler = TrampolineScheduler.instance();
Function<Callable<Scheduler>, Scheduler> schedulerFn = __ -> scheduler;
RxJavaPlugins.reset();
RxJavaPlugins.setInitIoSchedulerHandler(schedulerFn);
RxJavaPlugins.setInitNewThreadSchedulerHandler(schedulerFn);
RxAndroidPlugins.reset();
RxAndroidPlugins.setInitMainThreadSchedulerHandler(schedulerFn);
try {
base.evaluate();
} finally {
RxJavaPlugins.reset();
RxAndroidPlugins.reset();
}
}
};
}
@Override
public Statement apply(final Statement base, Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
RxAndroidPlugins.reset();
RxAndroidPlugins.setInitMainThreadSchedulerHandler(schedulerMapperLazy);
RxJavaPlugins.reset();
RxJavaPlugins.setIoSchedulerHandler(schedulerMapper);
RxJavaPlugins.setNewThreadSchedulerHandler(schedulerMapper);
RxJavaPlugins.setComputationSchedulerHandler(schedulerMapper);
TavernaApplication application = TavernaApplication.get(mContext);
application.setComponent(mTestComponent);
base.evaluate();
application.setComponent(null);
RxAndroidPlugins.reset();
RxJavaPlugins.reset();
}
};
}
@Override
public Statement apply(final Statement base, Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
RxAndroidPlugins.reset();
RxAndroidPlugins.setInitMainThreadSchedulerHandler(mRxAndroidSchedulersHook);
RxJavaPlugins.reset();
RxJavaPlugins.setIoSchedulerHandler(mRxJavaImmediateScheduler);
RxJavaPlugins.setNewThreadSchedulerHandler(mRxJavaImmediateScheduler);
base.evaluate();
RxAndroidPlugins.reset();
RxJavaPlugins.reset();
}
};
}
@BeforeClass
public static void setUpRxSchedulers() {
Scheduler immediate = new Scheduler() {
@Override
public Disposable scheduleDirect(@NonNull Runnable run, long delay, @NonNull TimeUnit unit) {
// this prevents StackOverflowErrors when scheduling with a delay
return super.scheduleDirect(run, 0, unit);
}
@Override
public Scheduler.Worker createWorker() {
return new ExecutorScheduler.ExecutorWorker(Runnable::run, false);
}
};
RxJavaPlugins.setInitIoSchedulerHandler(scheduler -> immediate);
RxJavaPlugins.setInitComputationSchedulerHandler(scheduler -> immediate);
RxJavaPlugins.setInitNewThreadSchedulerHandler(scheduler -> immediate);
RxJavaPlugins.setInitSingleSchedulerHandler(scheduler -> immediate);
RxAndroidPlugins.setInitMainThreadSchedulerHandler(scheduler -> immediate);
}
@Override
public Statement apply(final Statement base, Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
RxAndroidPlugins.reset();
RxAndroidPlugins.setInitMainThreadSchedulerHandler(schedulerFunctionLazy);
RxJavaPlugins.reset();
RxJavaPlugins.setIoSchedulerHandler(schedulerFunction);
RxJavaPlugins.setNewThreadSchedulerHandler(schedulerFunction);
RxJavaPlugins.setComputationSchedulerHandler(schedulerFunction);
base.evaluate();
RxAndroidPlugins.reset();
RxJavaPlugins.reset();
}
};
}
@BeforeClass
public static void onlyOnce() throws Exception {
RxAndroidPlugins.setInitMainThreadSchedulerHandler(
new Function<Callable<Scheduler>, Scheduler>() {
@Override
public Scheduler apply(Callable<Scheduler> schedulerCallable)
throws Exception {
return Schedulers.trampoline();
}
});
}
@Before
public void setup() {
RxAndroidPlugins.setInitMainThreadSchedulerHandler(
new Function<Callable<Scheduler>, Scheduler>() {
@Override
public Scheduler apply(Callable<Scheduler> schedulerCallable) throws Exception {
return Schedulers.trampoline();
}
});
}
@Before
public void init() {
loginPresenter = new LoginPresenter();
// BoltsConfig.configureMocks();
BundleFactoryConfig.setProvider(() -> Mockito.mock(Bundle.class));
RxAndroidPlugins.setInitMainThreadSchedulerHandler(schedulerCallable -> Schedulers.trampoline());
}
@BeforeClass
public static void init() {
Scheduler immediate = new Scheduler() {
@Override
public Disposable scheduleDirect(@NonNull Runnable run, long delay, @NonNull TimeUnit unit) {
return super.scheduleDirect(run, 0, unit);
}
@Override
public Worker createWorker() {
return new ExecutorScheduler.ExecutorWorker(Runnable::run, false);
}
};
RxJavaPlugins.setInitIoSchedulerHandler(scheduler -> immediate);
RxJavaPlugins.setInitComputationSchedulerHandler(scheduler -> immediate);
RxJavaPlugins.setInitNewThreadSchedulerHandler(scheduler -> immediate);
RxJavaPlugins.setInitSingleSchedulerHandler(scheduler -> immediate);
RxAndroidPlugins.setInitMainThreadSchedulerHandler(scheduler -> immediate);
OkHttpClient httpClient = TLSCompactHelper.getOKHttpClient();
GsonConverterFactory gsonConverterFactory = GsonConverterFactory.create();
RxJava2CallAdapterFactory rxJava2CallAdapterFactory = RxJava2CallAdapterFactory.create();
CompositeDisposable disposable = new CompositeDisposable();
photoService = new PhotoService(
httpClient,
gsonConverterFactory,
rxJava2CallAdapterFactory,
disposable
);
}
@BeforeClass public static void init() throws Exception {
// Tell RxAndroid to not use android main ui thread scheduler
RxAndroidPlugins.setInitMainThreadSchedulerHandler(
new Function<Callable<Scheduler>, Scheduler>() {
@Override public Scheduler apply(@NonNull Callable<Scheduler> schedulerCallable)
throws Exception {
return Schedulers.trampoline();
}
});
}
@Before
public void init() {
repositoriesPresenter = new RepositoriesPresenter();
// BoltsConfig.configureMocks();
RxAndroidPlugins.setInitMainThreadSchedulerHandler(schedulerCallable -> Schedulers.trampoline());
}
private void setSchedulers() {
RxAndroidPlugins.setInitMainThreadSchedulerHandler(scheduler -> Schedulers.trampoline());
RxJavaPlugins.setIoSchedulerHandler(scheduler -> Schedulers.trampoline());
}