#java #android #rx-java
Вопрос:
Я хочу показывать текст журнала, когда Интернет переключается с подключенного на не подключенный и наоборот. И теперь есть два вопроса.
- Я думаю, что это не так правильно, как должно быть, потому что теперь он каждые несколько секунд проверяет соединение, а не просто уведомляет, когда эта логическая переменная действительно меняется.
- Более того, когда я нахожусь в автономном режиме, появляется такая ошибка (когда в сети — ошибки нет).:
2021-07-20 18:29:51.872 22886-22903/pl.jawegiel.бесконечный удар E/Система: Неперехваченное исключение, созданное финализатором
2021-07-20 18:29:51.872 22886-22903/pl.jawegiel.бесконечный удар E/Система: java.lang.Исключение NullPointerException: Нулевая ссылка, используемая для синхронизации (ввод монитора) в com.android.org.conscrypt.ConscryptFileDescriptorSocket.доработать(ConscryptFileDescriptorSocket.java:1091) на java.lang.Демоны$Финализердемон.Завершите(Демоны.java:250) на java.lang.Демоны$FinalizerDaemon.runInternal(Демоны.java:237) в java.lang.Демоны$Daemon.run(Демоны.java:103) в java.lang.Thread.run(поток.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);
}