如何从android asynctask更改为rxandroid



我一直在使用异步任务但我不能再使用异步任务了

所以我决定使用rxandroid,并将其更改如下它似乎有效,但我不确定我是否正确使用了它你能给我什么建议吗?谢谢

for(int i=0;i<10;i++)
{
new AppTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,data[i]);
}

for(int i=0;i<10;i++)
{
Observable observable = Observable.just(data);
observable
.subscribeOn(Schedulers.newThread())
//.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
Observer<String> observer = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {

}
@Override
public void onNext(String s) {
process(s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};

要发射连续的整数范围,可以使用Observable.range((从起始值开始的每个数字,并递增每个发射,直到指定的计数已达到。

Observable.range(1,10).subscribe(s -> System.out.println("RECEIVED: " + s));

输出:

RECEIVED:1
RECEIVED:2
RECEIVED:3
RECEIVED:4
RECEIVED:5
RECEIVED:6
RECEIVED:7
RECEIVED:8
RECEIVED:9
RECEIVED:10

在您的情况下,您最多可以通过just传递10个项目

Observable.just("one", "two", "three", ... ,"ten");

您还可以使用CCD_ 2来从任何Iterable类型发出项,例如CCD_ 3。它还将为每个元素调用onNext(),然后调用onComplete()在迭代完成之后。

Schedulers.newThread()在您想要创建、使用然后销毁线程的情况下可能会有所帮助这样就不会占用内存。但对于复杂的应用程序将希望使用Schedulers.io((,以便在可能的情况下尝试重用线程。您还必须小心,因为Schedulers.newThread((可能会在复杂环境中横冲直撞应用程序(如Schedulers.io(((,并创建大量线程,这可以使您的应用程序崩溃。

最新更新