我一直在使用异步任务但我不能再使用异步任务了
所以我决定使用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(((,并创建大量线程,这可以使您的应用程序崩溃。