美文网首页
使用RXJava的注意事项:

使用RXJava的注意事项:

作者: jiaoheshang | 来源:发表于2018-07-23 09:20 被阅读0次

    使用RXJava的注意事项:

    -2018-07-23

    1.切断数据流的传递:

    1.1 收集所有的 Dispose对象;

    mCompositeDisposable.add(s)

    1.2 集中切断上下游的数据传递:

      this.mCompositeDisposable.dispose();

    本质:是设置一个 dispose 变量,根据这个变量判断是否可以传递数据;

    2.设置 ObservableOnSubscribe 为静态的内部类;

    本质:使得内部类在实例化的过程中,不持有外部类的引用;

    3.结束的时候,需要设置 Consumer 对象为null;

    方法: 执行 onTerminateDetach()操作;

    本质:把引用的内部类对象置为null;

    例子:

    Disposable disposable = Observable.create(new LoadAllFilesSubscribes())

                        .subscribeOn(Schedulers.io())//observable run on io thread

                        .observeOn(AndroidSchedulers.mainThread())//observe run on main thread

                        .onTerminateDetach()//当数据切断的时候,要执行此操作,防止内存泄露

        .map(new Function(){//因为这里再一次有了内部类的操作,要再一次用onTerminateDetach

    ..........

        })

        .onTerminateDetach()//当数据切断的时候,要执行此操作,防止内存泄露

                        .subscribe(new Consumer>() {

                            @Override

                            public void accept(List fileItems) throws Exception {

                                //更新UI

                                //updateView(fileItems);

                                mAdapter.getItems().addAll(fileItems);

                            }

                        });

            //收集Dispose

                addDisposable(disposable);

    private static class LoadAllFilesSubscribes implements ObservableOnSubscribe>{

            @Override

            public void subscribe(ObservableEmitter e) throws Exception {

                //load all files

                List list = AllDocSeekUtil.getLocalDocSearchResult();

                e.onNext(list);

            }

        };

    @Override

        protected void onDestroy() {

            super.onDestroy();

      //切断上下流的数据传输;

            removeDisposable();

        }

    相关文章

      网友评论

          本文标题:使用RXJava的注意事项:

          本文链接:https://www.haomeiwen.com/subject/fnjdmftx.html