NSTimer后台运行并弹出提示
来源:互联网 发布:美图都有什么软件 编辑:程序博客网 时间:2024/05/18 01:29
1.后台加入NSTimer
- (void)applicationDidEnterBackground:(UIApplication *)application
{
/*
Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
*/
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^
{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
//Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task, preferably in chunks.
_testTimer = [NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(getSomeTest) userInfo:nil repeats:YES];
[_testTimer fire];
[[NSRunLoop currentRunLoop] addTimer:_testTimer forMode:NSRunLoopCommonModes];
[[NSRunLoop currentRunLoop] run];
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
2.切换到前台停用NSTimer
- (void)applicationWillEnterForeground:(UIApplication *)application
{
if(_testTimer) {
if([_testTimer isValid]) {
[_testTimer invalidate];
}
}
/*
Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
*/
}
3.
- (void)localNotificationTest
{
Class cls = NSClassFromString(@"UILocalNotification");
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if(state == UIApplicationStateActive)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:[NSString stringWithFormat:@"您附近新有%d条活动正在进行", 20] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
[alert show];
[alert release];
}
else
{
NSLog(@"localNotificationTest");
UILocalNotification *notif = [[UILocalNotification alloc] init];
notif.fireDate = [NSDate date];
notif.timeZone = [NSTimeZone localTimeZone];
notif.alertBody= [NSString stringWithFormat:@"您附近新有%d条活动正在进行", 20];
notif.alertAction = @"显示";
notif.soundName= UILocalNotificationDefaultSoundName;
notif.applicationIconBadgeNumber = ([UIApplication sharedApplication].applicationIconBadgeNumber + 1);
notif.userInfo = [NSDictionary dictionaryWithObject:notif.alertBody forKey:@"kActivityNearByTotal"];
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
[notif release];
}
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
/*
Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
*/
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^
{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
//Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task, preferably in chunks.
_testTimer = [NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(getSomeTest) userInfo:nil repeats:YES];
[_testTimer fire];
[[NSRunLoop currentRunLoop] addTimer:_testTimer forMode:NSRunLoopCommonModes];
[[NSRunLoop currentRunLoop] run];
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
2.切换到前台停用NSTimer
- (void)applicationWillEnterForeground:(UIApplication *)application
{
if(_testTimer) {
if([_testTimer isValid]) {
[_testTimer invalidate];
}
}
/*
Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
*/
}
3.
- (void)localNotificationTest
{
Class cls = NSClassFromString(@"UILocalNotification");
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if(state == UIApplicationStateActive)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:[NSString stringWithFormat:@"您附近新有%d条活动正在进行", 20] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
[alert show];
[alert release];
}
else
{
NSLog(@"localNotificationTest");
UILocalNotification *notif = [[UILocalNotification alloc] init];
notif.fireDate = [NSDate date];
notif.timeZone = [NSTimeZone localTimeZone];
notif.alertBody= [NSString stringWithFormat:@"您附近新有%d条活动正在进行", 20];
notif.alertAction = @"显示";
notif.soundName= UILocalNotificationDefaultSoundName;
notif.applicationIconBadgeNumber = ([UIApplication sharedApplication].applicationIconBadgeNumber + 1);
notif.userInfo = [NSDictionary dictionaryWithObject:notif.alertBody forKey:@"kActivityNearByTotal"];
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
[notif release];
}
}
0 0
- NSTimer后台运行并弹出提示
- NSTimer后台运行并弹出提示
- Scheduled NSTimer后台运行
- iOS 后台运行NSTimer
- iOS后台运行NSTimer
- iOS开发 NSTimer 后台运行
- 程序进入后台运行NSTimer
- 后台弹出提示信息
- c#后台弹出提示
- NSTimer计时器后台运行的解决方法
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- iOS程序进入后台后仍运行定时器NSTimer
- JBPM邮件功能,reminder标签
- plsql无法连接linux下的oracle服务器,提示:ora-12541:TNS 无监听程序
- 【学生信息管理系统】Win7防火墙添加开放端口
- javascript学习笔记之window.open
- 背后的故事
- NSTimer后台运行并弹出提示
- 从几组题目中选取出每组rightnum<10的rightnum最大的条目信息(sql学习)
- 数据结构与算法面试题100道
- 进程和线程的区别
- js日期和时间戳互换
- 贝塞尔曲线运动详解
- json对象和js对象的区别
- HDMI方案
- TCP或者UDP,该如何选择?