当使用rxjava 1.xi用于返回Observable<Void>处理来自改造的空响应时:
@POST( "login" )
Observable<Void> getToken( @Header( "Authorization" ) String authorization,
@Header( "username" ) String username,
@Header( "password" ) String password );
Run Code Online (Sandbox Code Playgroud)
但是因为rxjava 2.x不会发出任何东西,Void是否有任何好的做法来处理那些空的响应?
我一直在研究并尝试使用Reactor和RxJava进行编码的Reactive Style.我确实理解,与单线程执行相比,反应式编码可以更好地利用CPU.
在基于Web的应用程序中,反应式编程与命令式编程之间是否有任何具体比较?
通过对非反应式编程使用反应式编程,我实现了多少性能提升和吞吐量?
还原反应编程有哪些优缺点?
有没有统计基准?
java reactive-programming project-reactor microservices rx-java2
我正在尝试整理我的代码,并且Single看起来对我来说是一个不错的选择,因为我正在做一些只能发出一个结果的东西.
我遇到了一个问题,因为我以前使用flatMapIterable我的回复(列表)并对每个项目做一些事情.我没有看到我如何用Single实现这个目标.
getListOfItems()
.flatMapIterable(items -> items)
.flatMap(item -> doSomethingWithItem())
.toList()
Run Code Online (Sandbox Code Playgroud)
如果能正常工作getListOfItems是返回一个Observable,但如果我试图使它返回Single,那么我不能这样做flatMapIterable,不能看到另一种,任何想法?
我从Android的角度来问这个问题,但这应该适用于RxJava.
作为最佳实践,应我的观点始终处分甚至短暂的Completable,Single,Maybe和终止Observable的Rx类型应该在短期内结束,但是当用户关闭该视图可以仍在执行?我知道当Rx链终止时,它会被丢弃,但这可能会在视图关闭后的某个时候发生.
例如,Single正在执行HTTP GET.调用将完成,但可能是在视图被破坏后,暂时阻止垃圾回收.
如果a CompositeDisposable用于Disposable长期观察收集这些s,我会认为应该注意clear()或Disposable定期删除这些s以防止无限大小的增长CompositeDisposable?
有人知道RxJava 2中运算符"doAfterTerminate"和"doFinally"之间的区别是什么?
我正在从Rx 1迁移到Rx 2,突然在阅读帖子时我发现Single应该是用于改装调用的可观察类型.
所以我决定尝试一下,在将我们的改装调用迁移到Rx 2时,我也将返回值更改为Single<whatever>.
现在的问题是,我们的一些测试模拟网络服务类似于:
when(userService.logout()).thenReturn(Observable.empty())
Run Code Online (Sandbox Code Playgroud)
正如您在迁移调用之前所看到的那样,我们过去只是通过告诉userServicemock返回一个空的observable 来完成流.
在迁移到Single调用的"版本"时,我们不再使用,Observable.empty()因为调用不返回Observable,但返回a Single.
我最终做了类似的事情:
when(userService.logout()).thenReturn(
Single.fromObservable(Observable.<whatever>empty()))
Run Code Online (Sandbox Code Playgroud)
我的问题是:
为什么我的编译器不允许自己使用TestSubscriber订阅Observable?
这是我的代码:
TestSubscriber<User> testSubscriber = new TestSubscriber<>();
Observable.just(new User()).subscribe(testSubscriber);
Run Code Online (Sandbox Code Playgroud)
并且它说它无法解决subscribe采用此参数的方法.但是在所有RxJava测试教程中,他们都使用TestSubscriber而没有这些问题.我该怎么做才能测试这样的Observable?
我试图为新的 Paging 3 库模仿 Google 的 codelab,当我尝试让 Room DAO 方法返回 a 时遇到以下错误PagingSource:
D:\Programming\Android\something\app\build\tmp\kapt3\stubs\debug\com\someapp\something\data\db\UsersDao.java:38: error: Not sure how to convert a Cursor to this method's return type (androidx.paging.PagingSource<java.lang.Integer,com.someapp.something.data.db.GithubUser>).
public abstract androidx.paging.PagingSource<java.lang.Integer, com.someapp.something.data.db.GithubUser> getUserByUserName(@org.jetbrains.annotations.NotNull()
^D:\Programming\Android\something\app\build\tmp\kapt3\stubs\debug\com\someapp\something\data\db\UsersDao.java:43: error: Not sure how to convert a Cursor to this method's return type (androidx.paging.PagingSource<java.lang.Integer,com.someapp.something.data.db.GithubUser>).
public abstract androidx.paging.PagingSource<java.lang.Integer, com.someapp.something.data.db.GithubUser> getUserByNote(@org.jetbrains.annotations.NotNull()
Run Code Online (Sandbox Code Playgroud)
这是我的UsersDao.kt:
@Dao
interface UsersDao {
@Insert
fun insert(user: GithubUser): Completable
@Insert
fun insert(userList: List<GithubUser>): Completable
@Query("DELETE FROM userDb")
fun clearDb(): Completable
@Query("SELECT * FROM …Run Code Online (Sandbox Code Playgroud) android rx-java2 android-room android-paging android-paging-library
我有一个BehaviorSubject我想要重置 - 我的意思是我希望最新值不可用,就像它刚刚创建一样.
我似乎没有看到一个API来做这个,但我想有另一种方法来实现相同的结果?
我希望的行为是我需要发出事件,并且我希望订阅者在他们订阅时获得最新事件 - 如果特定经理处于"已启动"状态.但是当这个经理被"停止"时,最新的事件应该不可用(就像它从未在第一时间开始一样).
我是新架构组件WorkManager的新手,我通过Retrofit和RxJava进行API调用.
我的用例是从后端获取新帖子,然后显示通知,并更新小部件.
所以来自Worker类的doWork()方法中的代码可能看起来像这样.
@NonNull
@Override
public Result doWork() {
AppDependencies appDependencies = new AppDependencies((Application) getApplicationContext());
Repository repository = appDependencies.getRepository();
repository.getNewPosts()
.flatMap(newPosts -> repository.inserPosts(newPosts).toObservable())
.doOnError(Timber::e)
//if success - > return Result.SUCCESS,
// -> show notification
// -> update widget
// error-> return Result.Failure
.dontKnowWhatBestNextThing; //blocking or subscribing
//if we reached here then Retry
return Result.RETRY;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是在Worker类中使用RxJava代码的正确方法是什么,因为doWork()方法有一个返回值,所以我必须使Rx代码同步.
如果我使用非阻塞Rx方法,我怎样才能返回值(成功 - 失败 - 重试)
android rx-java2 android-architecture-components android-jetpack android-workmanager
rx-java2 ×10
android ×6
rx-java ×4
java ×3
android-architecture-components ×1
android-room ×1
dispose ×1
rx-android ×1
stream ×1