相关疑难解决方法(0)

使用Retrofit rxjava concatWith时堆栈溢出

我想使用rxjava Observable处理Retrofit中的分页.我听从了另一个问题的建议.

我有超过100个页面需要被提取,但链在第20页的页面失败并停止对logserv的进一步订阅以及logcat中的以下日志

04-04 04:12:11.766    2951-3012/com.example.app I/dalvikvm? threadid=28: stack overflow on call to Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;.compareAndSet:ZLJJ
04-04 04:12:11.766    2951-3012/com.example.app I/dalvikvm? method requires 56+20+32=108 bytes, fp is 0x94b52350 (80 left)
04-04 04:12:11.766    2951-3012/com.example.app I/dalvikvm? expanding stack end (0x94b52300 to 0x94b52000)
04-04 04:12:11.766    2951-3012/com.example.app I/dalvikvm? Shrank stack (to 0x94b52300, curFrame is 0x94b548dc)
Run Code Online (Sandbox Code Playgroud)

有人知道为什么会这样吗?

更新:我知道这是由于递归而发生的,但是有一种更优雅的方式来处理改装和rxjava的分页吗?

java android rx-java retrofit rx-android

15
推荐指数
1
解决办法
3875
查看次数

RxJava 分页

我对 rxJava 相当陌生。在我的 api 响应中,我获得了有关总页数和当前页码的信息,例如:

 "pages": 22,
 "page": 1,
Run Code Online (Sandbox Code Playgroud)

我正在使用 Retrofit 在数据层进行 api 调用,我的 api 服务如下:

@GET("/story")
    Observable <StoryCollectionEntity> storyCollection(
              @Query("feed_ids") String feed_items, 
              @Query("page") int  page);
Run Code Online (Sandbox Code Playgroud)

然后:

   public Observable<StoryCollectionEntity> storyCollection() {
        return mUserApi.storyCollection(items,page);
}
Run Code Online (Sandbox Code Playgroud)

我在域层进行了这样的订阅:

public void execute(Subscriber UseCaseSubscriber) {
        this.subscription = this.buildUseCaseObservable()
                 .subscribeOn(Schedulers.from(threadExecutor))
                .observeOn(postExecutionThread.getScheduler())
                .subscribe(UseCaseSubscriber);

    }
 @Override public Observable buildUseCaseObservable() {
    return this.userRepository.stories();
  }
Run Code Online (Sandbox Code Playgroud)

我正在弄清楚如何通过发出下一页的结果让这个观察者对 recyclerView 滚动事件做出反应。即第 2 页到第二个滚动事件和第 3 页在第 3 次滚动...等

android rx-java rx-android

2
推荐指数
1
解决办法
4351
查看次数

标签 统计

android ×2

rx-android ×2

rx-java ×2

java ×1

retrofit ×1