是否可以在后台模式下暂停应用程序(当您按下主页按钮并且应用程序最小化时)?我有一些我不想暂停的计时器和变量。
编辑:
我已经调用了一个计时器,但是当我进入后台模式时它没有被调用:
- (void)applicationDidEnterBackground:(UIApplication *)application {
if(self.viewController.timerquest != NULL)
{
if(self.viewController.timerquest.timerRunning){
// Save varibales
[self performSelectorInBackground:@selector(performLongTaskInBackground) withObject:nil];
}
}
}
- (void) performLongTaskInBackground
{
// Set up a pool for the background task.
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
// perform some long task here, say fetching some data over the web.
//...
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];
// Always update the components back on the main UI thread.
[self performSelectorOnMainThread:@selector(completeLongRunningTask) withObject:nil waitUntilDone:YES];
[pool release];
}
-(void) updateTimer{
// Update my timer. This method is not being called in background mode
}
我该怎么办?
感谢。
答案 0 :(得分:2)
答案 1 :(得分:1)
答案 2 :(得分:1)
你可以用延迟的背景通知替换计时器吗?
答案 3 :(得分:1)
根据计时器开火时发生的情况,您希望set up a local notification在计时器发生的同时发射;当计时器呈现供用户操作的东西时,这很有用。至于保存变量,你需要使用-applicationDidEnterBackground:来保存你需要的状态,以便在应用重新启动时加载/生成正确的变量(在应用程序退出之前可能不会发生这种情况重新开始了。)
允许执行长时间运行后台任务的任务类型非常有限,特别适用于GPS和播放音频等内容。其他任何事情都需要逐个任务地决定是否模拟继续运行(例如将计时器转到本地通知),暂停并保存必要的状态以在下次运行应用程序时继续,只需取消任务和在恢复应用程序时优雅地重新启动/通知用户,或者要求有限的时间来完成任务(例如完成下载)。