GLib.NetworkMonitor Flatpak 应用中的初始网络可用性不正确
GLib.NetworkMonitor incorrect initial network availability in Flatpak app
我正在打包一个在启动时检查网络可用性的 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 版本。)
我正在打包一个在启动时检查网络可用性的 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 版本。)