.subscribeOn() 方法无法识别
.subscribeOn() method is not recognized
我想在我的项目中使用 RxAndroid 和 RxJava。因此,在 build.gradle 文件中添加了如下所示的行。但是,当我尝试使用
animalsObserver.subscribeOn();//unrecognized
AndroidStudio 无法识别。所以,请告诉我如何正确使用 .subscribeOn() 方法。
代码:
import rx.Observable;
import rx.Observer;
public class MainActivity extends AppCompatActivity {
Observable<String> animalsObservable = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
animalsObservable = Observable.just("Ant", "Bee", "Cat", "Dog", "Fox");
Observer<String> animalsObserver = getAnimalsObserver();
animalsObserver.subscribeOn();//unrecognized
}
private Observer<String> getAnimalsObserver() {
return new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "onSubscribe");
}
@Override
public void onNext(String s) {
Log.d(TAG, "Name: " + s);
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "onError: " + e.getMessage());
}
@Override
public void onComplete() {
Log.d(TAG, "All items are emitted!");
}
};
}
}
gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.9'
testCompile 'junit:junit:4.12'
}
在 subscribeOn() 方法中,您必须传递将在其上执行观察者的调度程序
您需要 subscribe() 方法;
Observable
有 subcribeOn()
api,而不是 Observer
。你的例子应该是这样的:
animalsObservable.subscribeOn(AndroidSchedulers.mainThread()).subscribe(getAnimalsObserver())
在 Observable 而不是 Observer 上调用方法 subsribeOn()。所以修改你的代码如下:
animalsObservable
.subscribeOn(Scheduler.io()) //run on background thread
.observerOn(AndroidScheduler.mainThread())
.subscribe(animalsObserver);
我想在我的项目中使用 RxAndroid 和 RxJava。因此,在 build.gradle 文件中添加了如下所示的行。但是,当我尝试使用
animalsObserver.subscribeOn();//unrecognized
AndroidStudio 无法识别。所以,请告诉我如何正确使用 .subscribeOn() 方法。
代码:
import rx.Observable;
import rx.Observer;
public class MainActivity extends AppCompatActivity {
Observable<String> animalsObservable = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
animalsObservable = Observable.just("Ant", "Bee", "Cat", "Dog", "Fox");
Observer<String> animalsObserver = getAnimalsObserver();
animalsObserver.subscribeOn();//unrecognized
}
private Observer<String> getAnimalsObserver() {
return new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "onSubscribe");
}
@Override
public void onNext(String s) {
Log.d(TAG, "Name: " + s);
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "onError: " + e.getMessage());
}
@Override
public void onComplete() {
Log.d(TAG, "All items are emitted!");
}
};
}
}
gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.9'
testCompile 'junit:junit:4.12'
}
在 subscribeOn() 方法中,您必须传递将在其上执行观察者的调度程序 您需要 subscribe() 方法;
Observable
有 subcribeOn()
api,而不是 Observer
。你的例子应该是这样的:
animalsObservable.subscribeOn(AndroidSchedulers.mainThread()).subscribe(getAnimalsObserver())
在 Observable 而不是 Observer 上调用方法 subsribeOn()。所以修改你的代码如下:
animalsObservable
.subscribeOn(Scheduler.io()) //run on background thread
.observerOn(AndroidScheduler.mainThread())
.subscribe(animalsObserver);