【问题标题】:Is this a valid justification for quitting an iPhone app programmatically?这是以编程方式退出 iPhone 应用程序的有效理由吗?
【发布时间】:2011-09-26 20:57:22
【问题描述】:

我知道这个问题已经被问过很多次了,我们从 Apple 那里得到了这个链接作为答案: http://developer.apple.com/library/ios/#qa/qa1561/

但是,最近,我在下面遇到了这个案例。除了直接使用“exit(0)”之外,我没有看到任何其他选项。

我有一个应用程序可以从我的 iPhone 的摄像头或麦克风收集数字数据。 然后我设计了一个按钮,上面写着“保存并退出”,因为这是我的应用程序中非常常见的场景。

没有以编程方式退出我的应用程序的能力,我只能有一个愚蠢的“保存”按钮。然后我的用户必须单击两次(1.“保存”按钮,然后 2.“主页”按钮)才能获得相同的结果 - 也就是这两个动作按顺序排列在一起。

然后我意识到,也许,这是我设计的一个缺陷。所以我就这样改了。

我删除了“保存退出”按钮,而是在底部添加了一条注释,上面写着“使用 HOME 按钮保存并退出”。我试图从用户的操作中捕捉到退出信号,然后在之前执行 SAVE。

通过这样做,用户可以简单地使用原生 HOME 按钮来执行“保存和退出”。

但是,这个解决方案并不完美。

如果我的应用程序保存数据的时间过长,iOS 仍有机会在用户点击“HOME”按钮后终止我的应用程序。然后用户可能会在没有通知的情况下丢失他们的数据!

如果我可以以编程方式退出,我可以先尝试“保存”。如果“保存”失败,我有足够的时间通知我的用户或完成所有需要的补救工作。

您认为这是在我的应用程序中使用“exit(0)”而不被拒绝的正当理由吗?

【问题讨论】:

  • 为什么用户首先需要退出?正如您所说,设备上的主页按钮已经让他们离开当前的应用程序。如果问题是应用程序正在执行某项操作,则您要么 a) 需要显示“请勿退出直到完成”的消息,或者更理想的是 b) 确保应用程序可以在后台进行处理
  • @DA 1. 多任务(后台处理)在一些旧设备中不可用; 2.拍照或录音后,用户需要退出,因为他们已经完成了这个应用程序。否则,按照目前的设计,下一轮拍照或录音会自动开始。如果没有此功能,他们必须单击两次才能保存并退出。
  • @PengOne 究竟如何? :D 你建议给乔布斯写一封信吗?
  • @aXqd:当然,或者在 Apple 论坛中提问。或阅读 Apple 的指南。无论如何,这里没有人能肯定地告诉你。
  • @PengOne 你是对的。我只是在想,如果你们同意这是一个有效的理由,那么我可以用此页面的链接给 Apple 写一封邮件作为支持。 :P

标签: iphone hig


【解决方案1】:

不,我非常怀疑 Apple 会让你有一个“保存并退出”按钮。它完全违背了平台约定,直接与苹果的 HIG 相矛盾。

您认为在哪些情况下您的数据无法在 iOS 为应用程序清理的时间内保存?您是否实际测量过并发现这是一个问题?

【讨论】:

  • 不,到目前为止,我还没有任何测量数据可以证明这一点。但后果相当严重。我没有返回值来指示它是否成功,因为我的应用程序已被杀死。与此同时,我只是丢失了我的数据,没有任何机会通知我的用户。
  • 而且,数据量由用户决定。但是,是的,我想我可以添加一些限制。
  • 如果不发生,后果一点也不严重。在尝试重新设计您的应用程序以打破 Apple 的规则之前,先弄清楚这是否是一个问题。你有大约五秒钟的时间来清理你的应用程序,你可以在这段时间内保存大量数据。您有多少数据认为 5 秒不够?
  • 谢谢。你说得对,我需要更多的统计数据来担心性能。但是如果发生不好的事情,补救工作如何?如果大 SAVE 失败,我需要要求用户做出决定。不知道能不能停止HOME键的杀伤力。请指教。 :)
  • 如果保存失败,您无能为力。你不能依赖用户总是按下你的按钮,任何数量的其他事情都可能会导致你的应用程序被终止,例如用户按下主页按钮、电池耗尽、用户手动终止你的应用程序等。不要不要担心极不可能的情况,而您却无能为力,并专注于让您的应用在正常使用中运行良好。
【解决方案2】:

您为什么不尝试一直自动保存?您可以保存到临时目录,然后在退出时执行文件移动操作。这可能会比您当前有时会失败的保存操作快得多。

【讨论】:

  • 感谢您的回答。我们仍在支持一些旧设备,这些设备在性能上并不那么好。事实上,我们在大SAVE之前有一些处理步骤。如果该处理失败,我也会让 SAVE 失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 2023-03-29
  • 2011-09-13
  • 2017-12-19
相关资源
最近更新 更多