Már*_*sta 5 android dispose rx-android rx-java2
我将可观察对象放在onPause()中,我想在onResume()中重新启动它。我怎样才能做到这一点?
这是我的观察结果:
Observable<ObdCommandResult> myObservable = Observable.create(new ObservableOnSubscribe<ObdCommandResult>() {
@Override
public void subscribe(ObservableEmitter<ObdCommandResult> e) throws Exception {
...
socket.connect();
new ObdResetCommand().run(socket.getInputStream(), socket.getOutputStream());
new EchoOffCommand().run(socket.getInputStream(), socket.getOutputStream());
new LineFeedOffCommand().run(socket.getInputStream(), socket.getOutputStream());
new SelectProtocolCommand(ObdProtocols.AUTO).run(socket.getInputStream(), socket.getOutputStream());
ObdCommandResult obdCommandResult = new ObdCommandResult();
while (!Thread.currentThread().isInterrupted()) {
for (int i = 1; i < 5; i++) {
try {
livedataObdCommandList.get(i-1).getCommand().run(socket.getInputStream(), socket.getOutputStream());
obdCommandResult.setId(i);
obdCommandResult.setValue(livedataObdCommandList.get(i-1).getCommand().getFormattedResult());
e.onNext(obdCommandResult);
}catch (UnsupportedCommandException uce) {
} catch (InterruptedException ie) {
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
...以及我的观察者:
Observer<ObdCommandResult> observer = new Observer<ObdCommandResult>() {
@Override
public void onNext(ObdCommandResult value) {
switch (value.getId()) {
case 1:
currentSpeed.setText(value.getValue());
break;
case 2:
revCounter.setText(value.getValue());
break;
case 3:
throttlePosition.setText(value.getValue());
break;
case 4:
oilTemp.setText(value.getValue());
break;
case 5:
fuelLevel.setText(value.getValue());
break;
case 6:
engineCoolant.setText(value.getValue());
break;
}
}
};
Run Code Online (Sandbox Code Playgroud)
所以我想处置它,并在用户返回时重新启动。
小智 0
您可以重复使用相同的可观察对象并多次订阅它。每次调用subscribe()都会产生一个新的订阅。(除非observable.create进行了订阅,否则不会执行 的正文。然后,将为每个进行的订阅执行该正文。)
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |