[英]RxJava Android: Observer incompatible types error
我想使用 RxJava 和 RxAndroid 進行以下異步網絡調用。 我在項目依賴項中包含了最新的RxJava
(3.0.1) 和RxAndroid
(3.0.0),但仍然在Subscription subscription = ....
塊中收到以下錯誤:
不兼容的類型
必需:org.reactivestreams.Subscription
發現:無效
這是為什么? 誰能告訴我如何使這個 RxJava 可觀察工作?
任何幫助apprechiated,謝謝。
Subscription subscription = getServerResponse(et_id.getText().toString())// error highlighted in this whole block
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(String bitmap) {
// Handle result of network request
}
@Override
public void onError(@NonNull Throwable e) {
// Update user interface to handle error
}
@Override
public void onComplete() {
// Update user interface if needed
}
});
public Observable<String> getServerResponse(String string) {
return Observable.fromCallable(new Callable<String>() {
@Override
public String call() throws Exception {
BufferedReader inFromServer = null;
String response = "";
Socket clientSocket = null;
try {
clientSocket = new Socket(serverHostname, serverPort);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
outToServer.writeBytes(string + "\n");
response = inFromServer.readLine();
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
response = MainActivity.this.getString(R.string.result_serverError);
}
return response;
}
});
}
我所有的反應式 Java 導入:
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
嘗試使用復合一次性用品。 它會是這樣的:
private CompositeDisposable compositeDisposable = CompositeDisposable();
compositeDisposable.add(getServerResponse(et_id.getText().toString())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(String bitmap) {
// Handle result of network request
}
@Override
public void onError(@NonNull Throwable e) {
// Update user interface to handle error
}
@Override
public void onComplete() {
// Update user interface if needed
}
}));
不要忘記對您的活動的 onDestroy 方法執行 CompositeDisposable.dispose() 。
請讓我知道這對你有沒有用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.