【问题标题】:Android. Do I need to dispose Maybe inside onBindViewHolder?安卓。我需要在 onBindViewHolder 中处理 Maybe 吗?
【发布时间】:2017-05-15 06:32:18
【问题描述】:

我正在适配器中的 MayBe observable 中执行繁重的请求。

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    final RealmArticle obj = getItem(position);
    int idTask = obj.getIdTask();

    Disposable mayBeCount = Maybe.fromCallable(()->
        {
            Realm bgInstance = Realm.getInstance(Realm.getDefaultInstance().getConfiguration());
            return bgInstance.where(RealmArticle.class).findAll().where().equalTo("idTask", idTask).equalTo("completed", true).count()
        })
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe(res->{
                        holder.row_count.setText(res);
                        this.notifyItemChanged(position);
            },
                    throwable -> Log.e(TAG, String.format("%s, %s", "Can not get items count", throwable.getMessage())));
}

问题是:我应该处置mayBeCount 吗?如果是这样,在哪个生命周期时刻这样做更好?

【问题讨论】:

    标签: android realm rx-java2


    【解决方案1】:

    您可以使用onViewDetachedFromWindow 希望取消操作。因此,我会将Disposable 作为属性添加到您的视图。

    @Override
    public void onViewDetachedFromWindow(MyViewHolder holder) {
        holder.mayBeCount.dispose();
    }
    

    【讨论】:

    • 就是这样。谢谢!
    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多