0

我正在打包一个在启动时检查网络可用性的 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 打包应用程序的预期吗?是否有更可靠的方法在启动时执行此检查?

4

1 回答 1

2

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

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

于 2021-11-21T23:36:28.530 回答