【问题标题】:Termination of an app running in the background终止在后台运行的应用程序
【发布时间】:2013-05-31 23:52:31
【问题描述】:

我目前正在开发一个应用程序,该应用程序在后台运行超过五分钟后需要终止。为了做到这一点,我必须在按下主页按钮后在后台运行一个计时器,或者在短信或电话等中断的情况下,然后在五分钟后使用applicationWillTerminate 方法将被调用。我的第一个问题是我应该将applicationWillTerminate 放在applicationWillResignActive 方法还是applicationDidEnterBackground 方法中?我的第二个问题是,由于这是一个具有多个视图的应用程序,我应该在 AppDelegate 类或其他地方写这些东西吗?感谢您的回复。

【问题讨论】:

  • 你的意思是你想给applicationWillTerminate自己打电话?
  • 我注意到其他应用程序会返回到它们的初始屏幕,这就是我希望我的应用程序做的事情。

标签: ios


【解决方案1】:

1) 您不能强制您的应用以编程方式完成。

2) 你不应该自己调用这些 AppDelegate 方法。它们应该由系统调用。

参考:UIApplicationDelegate Protocol Reference

【讨论】:

【解决方案2】:

这是一个非常贫民区,但是你可以做的是让你的应用程序在你想要它退出时崩溃,它会自动关闭,当然这不是关闭应用程序,但只要你是,它就没有真正的伤害为了控制它如何崩溃尝试去一个错误的访问错误,也就是试图访问已经被释放的东西

至于在后台运行计时器,我不知道您是否可以这样做,但作为替代方案,您可以节省他们离开应用程序的时间,也就是应用程序进入后台,然后您可以让所有事件返回到作为第一响应者的视图控制器的应用程序,并且每个 UIEvent 都有一个时间戳,无论它是哪个事件,您都可以比较时间戳并查看它是否大于 5 分钟

尽管我不建议上述任何内容,但这是我能为您的问题提出的最佳答案

在您的应用之外接收事件的代码

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

将启动事件跟踪,回调是:

- (void)remoteControlReceivedWithEvent:(UIEvent *)event { }

但你必须记住

[self becomeFirstResponder];

这告诉设备去哪个视图控制器进行事件跟踪,哦,别忘了让第一响应者辞职,并结束ReceivingRemotecontrolEvents

【讨论】:

  • 'Ghetto Programming'... 我想你刚刚发明了一个新短语! :)
猜你喜欢
  • 2012-05-21
  • 1970-01-01
  • 1970-01-01
  • 2017-04-04
  • 1970-01-01
  • 2011-03-20
  • 2014-03-25
  • 2011-03-18
  • 2020-02-03
相关资源
最近更新 更多