Android RxJava 在 Internet 更改其状态时通知

时间:2021-07-20 17:16:49

标签: java android rx-java

我想在互联网从连接到无互联网切换时显示日志文本,反之亦然。现在有两个问题。

  1. 更重要的是,当我离线时会出现这样的错误(在线时 - 没有错误):

    2021-07-20 18:29:51.872 22886-22903/pl.jawegiel.endlessblow E/System:终结器抛出的未捕获异常

    2021-07-20 18:29:51.872 22886-22903/pl.jawegiel.endlessblow E/System: java.lang.NullPointerException: 用于同步的空引用 (monitor-enter) 在 com.android.org.conscrypt.ConscryptFileDescriptorSocket.finalize(ConscryptFileDescriptorSocket.java:1091) 在 java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:250) 在 java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:237) 在 java.lang.Daemons$Daemon.run(Daemons.java:103) 在 java.lang.Thread.run(Thread.java:764)

这是我的代码。

ObservableInternetConnection.java

public class ObservableInternetConnection {

Subject<Boolean> mObservable = PublishSubject.create();

public void changeVariable(boolean b) {
    Boolean isInternetConnection = b;
    // notify the Observable that the value just change
    mObservable.onNext(isInternetConnection);
}

public void subscribeBoolInternetConn() {
    mObservable
            .subscribe(bool -> {
                if (bool)
                    Log.e("connection", "connection yes");
                else
                    Log.e("connection", "connection no");
            });
}
}

当我用这个类做事情时 GameActivity.java 的开始:

(...)
    private final Handler handlerCheckInternet = new Handler();
    private final ObservableInternetConnection observableInternetConnection = new ObservableInternetConnection();
(...)

    @Override
protected void onStart() {
    super.onStart();

    observableInternetConnection.subscribeBoolInternetConn();
    handlerCheckInternet.postDelayed(new Runnable() {
        @Override
        public void run() {
            observableInternetConnection.changeVariable(Util.isInternetAvailable(GameActivity.this));
            handlerCheckInternet.postDelayed(this, 3000);
        }
    }, 3000);
}

0 个答案:

没有答案
相关问题