【问题标题】:Keep Android Qt apps running in background让 Android Qt 应用程序在后台运行
【发布时间】:2021-12-22 04:51:15
【问题描述】:

我已经为我的家创建了一个门铃系统(serverclient),它通过 MQTT 发布/订阅来知道有人何时按响了门铃。它工作得很好,但是在我的客户端中,MQTT 连接不断关闭,即使在设置 _client->setAutoKeepAlive(true) 之后也是如此。

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

我的问题:

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

【问题讨论】:

  • 应用程序必须声明为服务,所以即使前端进入后台我也会继续运行
  • 如何将应用声明为服务?

标签: android c++ qt


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您提供非常详细的回答 - 欢迎来到 SO。
猜你喜欢
  • 1970-01-01
  • 2015-01-04
  • 2017-05-26
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多