【问题标题】:NSThread halting when lost focusNSThread在失去焦点时停止
【发布时间】:2012-11-16 12:11:48
【问题描述】:

我有一些线程需要持续运行或被锁定以供我使用。当我锁定手机或交换应用程序时,线程似乎停止,直到应用程序重新聚焦。

我有一个 Worker 类,它是 NSThread 的子类。有一个名为 start 的方法,由创建 Worker 对象的 firstViewController 调用。

//method start
[self performSelectorInBackground:@selector(run) withObject:self];

我需要做什么才能让我的线程一直运行,而不是只在焦点上运行?

谢谢:)

【问题讨论】:

  • 如果不使用后台处理任务 API,当您的应用暂停时,您将无法继续在后台运行。
  • 我需要...我需要跟踪用户的位置以进行碰撞检测等...这是一个普遍的基于位置的游戏。我的论文的一部分。我的替代方案是什么?

标签: objective-c ios nsthread


【解决方案1】:

当您的应用进入后台时,所有线程都处于暂停状态 - 除非您已将应用配置为使用多任务处理,并且您的工作正在使用多任务处理方法完成。这在Apple developer有详细说明。

简而言之,如果你想被 App Store 接受,你基本上不能在 iOS 上让一个线程在后台持续运行,除非你是一个导航或 VOIP 应用程序。进入后台后,你可以让线程继续运行大约 10 分钟,但仅此而已。

【讨论】:

  • 它是一个基于位置的游戏。我看不到其他解决方法。
  • 那么你大概可以使用location类型的后台任务选项。虽然我不知道这是否会通过 App Store 的要求。我猜可能是的,但值得先发一封电子邮件。可惜这并不容易,但这是 iOS 开发的代价(以及维护 Apple 的电池寿命声明:)。
  • 就像整个想法一样,游戏可以在后台进行。你会建议给谁发邮件,一般来说回复是没用的?让工作人员联系苹果是否值得?当你说 10 分钟时.. 是那种苹果商店的指导方针,还是 IOS 会终止它?
  • iOS 将终止它。如前所述,location 后台类型将允许您继续运行并接收位置更新。这似乎适用于您的情况。您可以发送电子邮件至 appreview@apple.com,并尝试回复您的运气。或者在 App Store 上搜索一下,看看是否有其他与您类似的游戏获得批准。指南中没有任何内容禁止它,但这些“新”的边缘情况通常会引起奇怪的反应。
  • 我的一个朋友今天向我展示了一个应用程序,它就像一个跟踪你的健身应用程序。这有点像我只需要从服务器接收位置以查看玩家是否在实体范围内,然后再通知他们。 - 这有意义吗?我的主管说这不是世界末日。只要我还能做一些内部测试。 (apple adhoc 最多 100 台设备)
猜你喜欢
  • 2015-03-14
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
相关资源
最近更新 更多