2

我有一个当前可以与服务器通信的应用程序。想象以下情况:

  1. 用户点击一些触发服务器请求的按钮。
  2. 请求被发送到服务器并被处理。
  3. 用户点击主页按钮(并且可能通过点击主页按钮两次从内存中删除应用程序)。
  4. 脚本完成处理并返回结果。

问题:用户的设备是否会收到此响应(我很确定从内存中删除时不会,但是关闭应用程序时会怎样)?

4

2 回答 2

2

iOS 中有 5 种活动状态:

  • 未运行:应用程序尚未启动或正在运行,但已被系统终止。

  • Inactive:应用程序在前台运行,但没有接收到事件。可以将 iOS 应用程序置于非活动状态,例如,当收到呼叫或 SMS 消息时。

  • Active:应用程序在前台运行,并接收事件。

  • 背景:应用程序在后台运行,并执行代码。

  • Suspended:应用程序在后台,但没有执行任何代码。

在用户点击主页按钮的第三种情况下,应用程序将被发送到背景状态#4,并且仍然可以接收数据并允许您的脚本运行。如果用户终止应用程序,(状态#1)您的脚本将无法完成运行。

因此,要回答您的问题,是的,如果用户将其置于后台状态,您的应用程序将继续执行代码,但如果他们关闭应用程序则不会,因为这将使您的应用程序处于未运行状态。

于 2015-04-20T17:43:26.480 回答
0
  1. 应用程序已暂停(在后台,未运行) - 在这种情况下,您的请求的执行将暂停。当您的应用程序进入前台时,请求通常以超时结束。
  2. 应用程序被终止 - 在这种情况下,您的应用程序的上下文丢失并且重新启动后没有正在运行的请求。

这是您应该关注的两种情况。对我来说,当应用程序进入后台时取消所有正在运行的请求是一个很好的解决方案,因为当应用程序再次进入前台时更容易重新启动所有内容。

此外,您可以设置后台模式,使应用程序能够在后台执行一些代码,但这是一个更高级的主题。

于 2015-04-20T17:55:12.773 回答