我想在互联网从连接到无互联网切换时显示日志文本,反之亦然。现在有两个问题。
更重要的是,当我离线时会出现这样的错误(在线时 - 没有错误):
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);
}