Android 如何将asynctask转换为Rxjava?

Android 如何将asynctask转换为Rxjava?,android,android-asynctask,rx-java,rx-android,rx-java2,Android,Android Asynctask,Rx Java,Rx Android,Rx Java2,我正在尝试将以下两个异步任务转换为rxjava,但不确定如何进行。有什么想法吗 new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { /* Shutdown video players */ Set<

我正在尝试将以下两个异步任务转换为rxjava,但不确定如何进行。有什么想法吗

 new AsyncTask<Void, Void, Void>() {
                @Override
                protected Void doInBackground(Void... params) {

                    /* Shutdown video players */
                    Set<Map.Entry<String, PlayerBundle>> entries = videoPlayerPool.entrySet();
                    for (Map.Entry<String, PlayerBundle> entry : entries) {
                        PlayerBundle bundle = entry.getValue();
                        bundle.player.release();
                    }

                    /* Shutdown audio players */
                    entries = audioPlayerPool.entrySet();
                    for (Map.Entry<String, PlayerBundle> entry : entries) {
                        PlayerBundle bundle = entry.getValue();
                        bundle.player.release();
                    }

                    videoStreamer.stopStream();
                    videoStreamer.release();

                    audioStreamer.stopStream();
                    audioStreamer.release();

                    return null;
                }

                @Override
                protected void onPostExecute(Void aVoid) {
                    cb.event(new Spin.Event<Void>());
                }
            }.execute();
newasynctask(){
@凌驾
受保护的Void doInBackground(Void…参数){
/*关闭视频播放器*/
Set entries=videoPlayerPool.entrySet();
对于(Map.Entry:entries){
PlayerBundle bundle=entry.getValue();
bundle.player.release();
}
/*关闭音频播放器*/
entries=audioPlayerPool.entrySet();
对于(Map.Entry:entries){
PlayerBundle bundle=entry.getValue();
bundle.player.release();
}
videoStreamer.stopStream();
videoStreamer.release();
audioStreamer.stopStream();
audioStreamer.release();
返回null;
}
@凌驾
受保护的void onPostExecute(void避免){
cb.event(新的Spin.event());
}
}.execute();
以及:

newasynctask(){
@凌驾
受保护的Void doInBackground(Void…参数){
Set entries=pool.entrySet();
对于(Map.Entry:entries){
参与者=entry.getValue();
参与者。释放();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void避免){
cb.event(新的Spin.event());
}
}.execute();
我的gradle中已经包含了rxjava,但不确定如何转换这个

Observable.defer(new Func0(){
    Observable.defer(new Func0<Observable<Void>>() {
        @Override
        public Observable<Void> call() {
            /* Shutdown video players */
            Set<Map.Entry<String, PlayerBundle>> entries = videoPlayerPool.entrySet();
            for (Map.Entry<String, PlayerBundle> entry : entries) {
                PlayerBundle bundle = entry.getValue();
                bundle.player.release();
            }

            /* Shutdown audio players */
            entries = audioPlayerPool.entrySet();
            for (Map.Entry<String, PlayerBundle> entry : entries) {
                PlayerBundle bundle = entry.getValue();
                bundle.player.release();
            }

            videoStreamer.stopStream();
            videoStreamer.release();

            audioStreamer.stopStream();
            audioStreamer.release();

            return Observable.just(null);
        }
    })
    .doOnCompleted(new Action0() {
        @Override
        public void call() {
            cb.event(new Spin.Event<Void>());
        }
    })
    .subscribeOn(Schedulers.computation())
    .subscribe();

    Observable.defer(new Func0<Observable<Void>>() {
        @Override
        public Observable<Void> call() {
            Set<Map.Entry<String, Participant>> entries = pool.entrySet();
            for (Map.Entry<String, Participant> entry : entries) {
                Participant participant = entry.getValue();
                participant.release();
            }
            return Observable.just(null);
        }
    }).doOnCompleted(new Action0() {
        @Override
        public void call() {
            cb.event(new Spin.Event<Void>());
        }
    })
    .subscribeOn(Schedulers.computation())
    .subscribe();
@凌驾 公共可观测呼叫(){ /*关闭视频播放器*/ Set entries=videoPlayerPool.entrySet(); 对于(Map.Entry:entries){ PlayerBundle bundle=entry.getValue(); bundle.player.release(); } /*关闭音频播放器*/ entries=audioPlayerPool.entrySet(); 对于(Map.Entry:entries){ PlayerBundle bundle=entry.getValue(); bundle.player.release(); } videoStreamer.stopStream(); videoStreamer.release(); audioStreamer.stopStream(); audioStreamer.release(); 返回可观察值。just(null); } }) .doOnCompleted(新操作0(){ @凌驾 公开作废通知(){ cb.event(新的Spin.event()); } }) .subscribeOn(Schedulers.computation()) .subscribe(); 可观察的延迟(新的Func0(){ @凌驾 公共可观测呼叫(){ Set entries=pool.entrySet(); 对于(Map.Entry:entries){ 参与者=entry.getValue(); 参与者。释放(); } 返回可观察值。just(null); } }).doOnCompleted(新操作0(){ @凌驾 公开作废通知(){ cb.event(新的Spin.event()); } }) .subscribeOn(Schedulers.computation()) .subscribe();
当你遇到问题时,试试这个,问真正的问题。关键字“TRY”以上两个是两个不同的异步任务。可以分开做吗。还有,什么是func0和action0。难道不可能像一个匿名类那样做吗?或者以相同的方式转换standalonesecond任务。Func0和Action0是匿名类。这些是接口名称。它给了我一个错误:无法解析符号func0和Action0。知道如何解决这个问题吗?确保你有这个导入:import rx.functions.Action0;导入rx.functions.Func0;导入rx.schedulers.schedulers;是完蛋了还是完蛋了?另外,我刚刚实现了:implementation'io.reactivex.rxjava2:rxjava:2.1.1'implementation'io.reactivex.rxjava2:rxandroid:2.0.1',我还需要实现:implementation'io.reactivex:rxjava:1.0.14'吗?
    Observable.defer(new Func0<Observable<Void>>() {
        @Override
        public Observable<Void> call() {
            /* Shutdown video players */
            Set<Map.Entry<String, PlayerBundle>> entries = videoPlayerPool.entrySet();
            for (Map.Entry<String, PlayerBundle> entry : entries) {
                PlayerBundle bundle = entry.getValue();
                bundle.player.release();
            }

            /* Shutdown audio players */
            entries = audioPlayerPool.entrySet();
            for (Map.Entry<String, PlayerBundle> entry : entries) {
                PlayerBundle bundle = entry.getValue();
                bundle.player.release();
            }

            videoStreamer.stopStream();
            videoStreamer.release();

            audioStreamer.stopStream();
            audioStreamer.release();

            return Observable.just(null);
        }
    })
    .doOnCompleted(new Action0() {
        @Override
        public void call() {
            cb.event(new Spin.Event<Void>());
        }
    })
    .subscribeOn(Schedulers.computation())
    .subscribe();

    Observable.defer(new Func0<Observable<Void>>() {
        @Override
        public Observable<Void> call() {
            Set<Map.Entry<String, Participant>> entries = pool.entrySet();
            for (Map.Entry<String, Participant> entry : entries) {
                Participant participant = entry.getValue();
                participant.release();
            }
            return Observable.just(null);
        }
    }).doOnCompleted(new Action0() {
        @Override
        public void call() {
            cb.event(new Spin.Event<Void>());
        }
    })
    .subscribeOn(Schedulers.computation())
    .subscribe();