在后台保留 Android Qt 应用程序 运行

Keep Android Qt apps running in background

我为我的家创建了一个门铃系统 (server, client),它通过 MQTT publish/subscriptions 工作,可以知道有人按了门铃。它工作得很好,但是在我的客户端中,MQTT 连接一直关闭,即使在设置 _client->setAutoKeepAlive(true).

之后也是如此

此外,我想知道是否有人可以给我提示如何设置应用程序以在后台保持 运行ning。到目前为止,我发现我可以 set the persistence attribute in my AndroidManifest.xml,但我能做的就是让我的应用程序 运行 始终处于后台,即使它被意外关闭吗?

我的问题:

  1. 如何防止 QMqttClient 自动断开连接 - 或者:如果连接丢失,我如何自动重新连接?
  2. 如何防止 Qt Android 应用程序被杀死?

您可以使用该服务,尽量避免程序被破坏。

服务是可以在后台执行长时间运行ning 操作的应用程序组件。它不提供用户界面。一旦启动,服务可能会继续 运行ning 一段时间,即使在用户切换到另一个应用程序之后也是如此。此外,组件可以绑定到服务以与其交互,甚至执行进程间通信 (IPC)。例如,服务可以处理网络事务、播放音乐、执行文件 I/O 或与内容提供商交互,所有这些都来自后台。

Android 系统仅在内存不足且必须为具有用户焦点的 activity 恢复系统资源时才停止服务。如果该服务绑定到具有用户焦点的 activity,它就不太可能被杀死;如果服务在前台被声明为 运行,它很少被杀死。如果服务启动时间长运行ning,系统会随着时间的推移降低其在后台任务列表中的位置,服务变得极易被杀死——如果你的服务启动了,你必须将其设计为优雅地处理系统重启。

https://developer.android.com/guide/components/services