GLib.NetworkMonitor Flatpak应用程序中的初始网络可用性不正确



我正在打包一个Flatpak应用程序,该应用程序在启动时检查网络可用性。自从改用Flatpak包装后,我注意到GLib。NetworkMonitor最初报告没有网络可用性,但很快就会发出network-changed信号,指示存在网络连接

这似乎与Flatpak有关——可能是因为沙盒最初没有连接?

我在任何地方都没有看到这种行为的记录,所以我不想假设最初总是会发出信号。

public class MyApplication : Gtk.Application {
private bool is_network_available;
construct {
// After the application is fully started, UI initialized, etc. this gets
// triggered and reports change to `true`
network_monitor.network_changed.connect (() => {
debug ("Network availability changed: %s", network_monitor.get_network_available ().to_string ());
});
}

protected override void activate () {
// Check the initial state of the network connection
is_network_available = network_monitor.get_network_available ();
debug (is_network_available); // Reports false
}

}

这是否适用于Flatpak封装应用程序?是否有更可靠的方法在启动时执行此检查?

这是GLib中的一个错误:https://gitlab.gnome.org/GNOME/glib/-/issues/1718

目前,你将不得不以某种方式解决它。假设信号总是在启动时发出,这并不能保证行为,因此,如果您将其用作变通方法,则应以GLib版本为条件,如果针对已修复的GLib版本构建,则禁用变通方法代码。(不过,目前还没有修复GLib的版本。(

最新更新