GLib.NetworkMonitor Flatpak 应用程序中的初始网络可用性不正确
Posted
技术标签:
【中文标题】GLib.NetworkMonitor Flatpak 应用程序中的初始网络可用性不正确【英文标题】:GLib.NetworkMonitor incorrect initial network availability in Flatpak app 【发布时间】:2021-12-31 14:53:41 【问题描述】:我正在打包一个在启动时检查网络可用性的 Flatpak 应用程序。自从切换到 Flatpak 封装后,我注意到 GLib.NetworkMonitor 最初报告没有网络可用性,但不久之后发出 network-changed
信号以指示存在 网络连接。 p>
这似乎与 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 打包的应用程序是预期的吗?是否有更可靠的方法在启动时执行此检查?
【问题讨论】:
【参考方案1】:这是 GLib 中的一个错误:https://gitlab.gnome.org/GNOME/glib/-/issues/1718
目前,您将不得不以某种方式解决它。假设始终在启动时发出信号并不能保证行为,因此,如果您将其用作解决方法,则应使其以 GLib 版本为条件,如果针对已修复的 GLib 版本构建,则禁用您的解决方法代码。 (不过,还没有修复 GLib 的版本。)
【讨论】:
谢谢你链接到那个问题!我看了很长一段时间,但特别是在 Flatpak 上的范围太窄了。很不幸,他们似乎并没有真正承认这是一个问题……无论如何,再次感谢您提供的信息! 它被确认为一个问题(错误报告仍然开放),但目前尚不清楚修复它的最佳方法是什么,而不破坏过程中的其他东西。上游开发资源非常少的事实加剧了这种情况,这就是为什么还没有修复工作的原因。它最终会得到修复;如果有人提出解决方案会更快:) 这很公平,完全可以理解!是“添加 0.5 秒的睡眠”和“解决方案正在修复应用程序”的 cmets 让我犯了错误。 可以理解!以上是关于GLib.NetworkMonitor Flatpak 应用程序中的初始网络可用性不正确的主要内容,如果未能解决你的问题,请参考以下文章