iOS程序进入后台,延迟指定时间退出

程序进入后台,延迟指定时间退出

正常程序退出后,会在几秒内停止工作;
要想申请更长的时间,需要用到
beginBackgroundTaskWithExpirationHandler
endBackgroundTask
一定要成对出现

{   NSTimer *_timer;

int aa;

__block UIBackgroundTaskIdentifier _backIden;

}

- (void)applicationDidEnterBackground:(UIApplication *)application {

[self beginTask];

//在非主线程开启一个操作在更长时间内执行; 执行的动作

aa =0;

_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(go:) userInfo:nil repeats:YES];

}

-(void)go:(NSTimer *)tim

{

NSLog(@"%@==%d ",[NSDate date],aa);

aa++;

if (aa==9) {

[_timer invalidate];

[self endBack]; // 任务执行完毕,主动调用该方法结束任务

}

}

-(void)beginTask

{

NSLog(@"begin=============");

_backIden = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

NSLog(@"begin  bgend=============");

[self endBack]; // 如果在系统规定时间内任务还没有完成,在时间到之前会调用到这个方法,一般是10分钟

}];

}

-(void)endBack

{

NSLog(@"end=============");

[[UIApplication sharedApplication] endBackgroundTask:_backIden];

_backIden = UIBackgroundTaskInvalid;

}

时间: 2024-10-08 03:08:42

iOS程序进入后台,延迟指定时间退出的相关文章

当程序进入后台时执行长时间代码

进入后台时,iOS给了我们10分钟的时间做一些事件处理. AppDelegate.h: 1 #import <UIKit/UIKit.h> 2 3 @interface AppDelegate : UIResponder <UIApplicationDelegate> 4 5 @property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUpdateTask; 6 @property (strong, nona

iOS 程序切换后台

1. -(void)animationFinished:(NSString*)animationid finished:(NSNumber*)finished context:(void*)context { if ([animationid compare:@"exitApplication"]==0) { exit(0);// 退出应用程序 NSLog(@"stop"); } } -(IBAction)exit:(id)sender { [UIViewbegin

iOS程序进入后台后仍运行定时器NSTimer

由于本应用需要在应用进入后台后还要进行定时的检测功能,因此对于我来说怎样让APP在进入后台后 保持运行状态是比较大的需求.然后在iOS系统中是很难实现的,不管是 通过 音频还是 定位系统,我查找了一些资料后都是只能申请到十分钟的运行态.没有所谓的长期运行的概念..... 然而在博客中突然看到这篇文章,尝试了下竟然可以运行很久.不管怎么样我还是先试试了......至于苹果是否能审核通过估计又是个难是 具体如下: 本文所讲为其中之一:iOS程序进入后台后十分钟之内就会被系统kill掉,怎么解决呢?我

iOS 程序进入后台,包含用户上拉快捷菜单导致程序失去活跃的研究

今日在使用某App时候,突然发现上拉菜单.程序视频扔在播放,咦!引起了我的兴趣. 首先,列出两个方法, 第一个方法是AppDelegate的代理.当程序进入后台时候调用 - (void)applicationDidEnterBackground:(UIApplication *)application NS_AVAILABLE_IOS(4_0); 第二个方法是.注冊系统通知,name是UIApplicationWillResignActiveNotification,当程序释放活跃的时候调用.

iOS 程序进入后台,包括用户上拉快捷菜单导致程序失去活跃的研究

今日在使用某App时候,突然发现上拉菜单,程序视频扔在播放,咦!引起了我的兴趣. 首先,列出两个方法, 第一个方法是AppDelegate的代理,当程序进入后台时候调用 - (void)applicationDidEnterBackground:(UIApplication *)application NS_AVAILABLE_IOS(4_0); 第二个方法是,注册系统通知,name是UIApplicationWillResignActiveNotification,当程序释放活跃的时候调用.

bat脚本命令循环运行程序 ,然后指定时间退出。

@echo offtitle EcCheck // 显示标题 :loopif "%time%" GTR "23:00.00" (exit) else goto t //如果系统时间是23点退出程序.如果不是则继续进行t标签的程序:tcd C:\ECsystem\publishC:\ECsystem\publish\wfmain.exe exeitem -user=0036 -jobcd=SP_VERSION_CHECK -itemid=7060 -itemid=70

iOS 程序退到后台,如何继续执行任务

程序从前台退到后,将执行程序的委托方法. - (void)applicationDidEnterBackground:(UIApplication *)application { } 问题: 当应用被送到后台,主线程就会被暂停.用 NSThread 的 detachNewThreadSelector:toTar get:withObject:类方法创建的线程也被挂起. 场景: 应用从前台退到后台 程序执行代理方法 applicationDidEnterBackground.这时候,我们只有很短的

IOS 后台挂起程序 当程序到后台后,继续完成Long-Running Task 任务

我们知道,到我们程序从前台退到后台(安home)键后,将执行程序的委托方法. // 当应用程序掉到后台时,执行该方法 - (void)applicationDidEnterBackground:(UIApplication *)application { } 我们已经知道: 当一个 iOS 应用被送到后台,它的主线程会被暂停.你用 NSThread 的 detachNewThreadSelector:toTar get:withObject:类方法创建的线程也被挂起了. 我们假设有这么一种情况:

iOS后台挂起程序 当程序到后台后,继续完成Long-Running Task 任务

我们知道,到我们程序从前台退到后台(安home)键后,将执行程序的委托方法. // 当应用程序掉到后台时,执行该方法 - (void)applicationDidEnterBackground:(UIApplication *)application { } 我们已经知道: 当一个 iOS 应用被送到后台,它的主线程会被暂停.你用 NSThread 的 detachNewThreadSelector:toTar get:withObject:类方法创建的线程也被挂起了. 我们假设有这么一种情况: