使用RXJava的注意事项:

使用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的注意事项:)