2013-05-31 51 views
0

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

+0

你的意思是你要调用'applicationWillTerminate'自己吗? –

+0

我注意到其他应用程序将返回到他们的启动画面,这就是我希望我的应用程序执行的操作。 –

回答

2

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

2)你不应该自己调用这些AppDelegate方法。他们打算被系统称为只有

参考:UIApplicationDelegate Protocol Reference

+0

我发现这个链接,这是一个有效的解决方案? http://stackoverflow.com/questions/6923831/i-want-to-terminate-the-app-after-some-minutes-while-it-run-in-background?rq=1 –

0

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

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

无论我不建议任何上述情况,但这是最好的答案我可以拿出你的问题

代码用于接收您的应用程序的事件出方

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

将开始追踪事件,回调就是:

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

,但你必须记住要

[self becomeFirstResponder]; 

这告诉该浏览器去的事件跟踪设备,哦,不要忘了辞职第一响应,并endReceivingRemotecontrolEvents

+0

'贫民窟编程'..我想你刚发明了一个新词组! :) – sangony