RxJava'ya oldukça yeniyim, bu muhtemelen aptalca bir soru. Senaryonumu tarif edeceğim.RxJava tekli arka plan iş parçacığı zamanlayıcısı
Bazı resimleri güncelleştiren UI iş parçacığı üzerinde bazı kodlar var ama bu görüntüler çok önemli değil ve üretirken biraz kaynak tüketiyorlar, böylece bunları tek bir iş parçacığı üzerinde oluşturmak istiyorum (kullanıcı arabirimi değil) Tabii ki) ve bunları tek tek üretin. Ben trambolin zamanlayıcı istediğimi tahmin ediyorum ama benim sorunum, eğer kullanırsam o zaman UI iş parçacığı üzerinde çalışma yapar ve bunu başka bir iş parçacığında yapmak istiyorum.
Açıkçası, öğeleri sıraya koyabildiğim kendi iş parçamı yazabilirim ve sonra bunları tek tek işler, ancak belki de RxJava'nın benim için basit bir çözümü olacağını düşündüm.
Benim geçerli kod şöyle görünür: "? Ui iş parçacığı üzerinde"
Observable<Bitmap> getImage = Observable.create(new Observable.OnSubscribe<Bitmap>() {
@Override public void call(Subscriber<? super Bitmap> subscriber) {
Log.w(TAG,"On ui thread? "+ UIUtils.isRunningOnUIThread());
subscriber.onNext(doComplexTaskToGetImage());
subscriber.onCompleted();
}
});
getImage.subscribeOn(Schedulers.trampoline()).subscribe(new Action1<Bitmap>() {
@Override public void call(Bitmap bitmap) {
codeToSetTheBitmap(bitmap);
}
});
diyor
My günlüğü her zaman doğrudur. Öyleyse, bu kodu ve aynı işi tek bir iş parçacığında (ui iş parçacığı değil) çalıştırarak, bu iş için sıraya bir kod kodu yazmadan sırayla nasıl yapabilirim?
Düzenleme:
Ben bu şimdiSchedulers.single()
kullanılarak gerçekleştirilebilir veya kendi isterseniz
new SingleScheduler()
kullanabilirsiniz inanıyoruz
. Hala test ediyorum ama bunu yayınladığımda geri istediğimi düşünüyorum.
aşağıdaki yollardan biriyleObservable
için
Scheduler
oluşturmak için tek yeniden kullanılabilir iplik oluşturabilir
http://reactivex.io/documentation/operators/subscribeon.html https://github.com/ReactiveX/RxAndroid – corsair992
Zaten RxAndroid kullanıyorum ve kodum "subscribeOn" kullanıyorum gösterir. Ne istediğimi yapmak için 'subscribeOn''a ne geçeceğini bilmiyorum. – casolorz
Arka plan iş parçacığına 'Zamanlayıcı' (['Zamanlayıcılar sınıfı] (http://reactivex.io/RxJava/javadoc/rx/schedulers/Schedulers.html) oluşturmak için statik fabrika yöntemleri içerir. O zaman, 'AndroidSchedulers.mainThread()' yöntemi ile RxAndroid'te edinilebilecek bir ana iş parçacığı 'Zamanlayıcı 'üzerinde gözlemlemeniz gerekir. – corsair992