iOS 進入Background後可執行時間,可額外要求的時間由10分鐘變成3分鐘?
在不同的文件中看到iOS App由前景進入背景後,只能再執行10秒或者5秒。然後就會被suspended!
之前iOS 7的書籍中提到可以再額外要求10分鐘,當然現在iOS已經到8的版本了,今天試了一下,發現
好像可額外要求的時間又被Apple給縮短了!
建一個簡單的single view App, 其ViewController.m內容:
在AppDelegate.m中加入以下程式:
在iPhone(iOS 8)手機上執行, 輸出:
App執行沒多久,我就按HOME鍵,將App丟到背景去,可以看到
我建了一個計時器,每5秒就輸出現在時間以及背景可執行秒數。
結果輸出背景可執行時間一開始就只有178.多秒,然後每5秒又輸出時
真的背景可執行時間都約少了5秒。
直到只剩下8秒時,就不再輸出了,可以安全推論說,此時
App已經被suspend下來了。所以現在iOS進入背景後,可額外要求時間,
只有約3分鐘了?
建一個簡單的single view App, 其ViewController.m內容:
#import "ViewController.h"
@interface ViewController ()
{
NSDateFormatter *format;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"H:m:s"];
[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(ticker:) userInfo:nil repeats:YES];
}
- (void)ticker:(NSTimer *)theTimer {
NSDate *today = [NSDate date];
NSLog(@"%@", [format stringFromDate:today]);
NSLog(@"%f", [UIApplication sharedApplication].backgroundTimeRemaining);
}
@end
在AppDelegate.m中加入以下程式:
- (void)endBackgroundTask
{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
// will enter this block after 10 min.
[self endBackgroundTask];
}];
}
在iPhone(iOS 8)手機上執行, 輸出:
2015-04-14 16:48:26.402 test_bg10[1520:601603] 16:48:262015-04-14 16:48:26.405 test_bg10[1520:601603] 178.7109312015-04-14 16:48:31.498 test_bg10[1520:601603] 16:48:312015-04-14 16:48:31.500 test_bg10[1520:601603] 173.6153272015-04-14 16:48:36.498 test_bg10[1520:601603] 16:48:362015-04-14 16:48:36.500 test_bg10[1520:601603] 168.6151932015-04-14 16:48:41.498 test_bg10[1520:601603] 16:48:412015-04-14 16:48:41.501 test_bg10[1520:601603] 163.6148152015-04-14 16:48:46.498 test_bg10[1520:601603] 16:48:462015-04-14 16:48:46.501 test_bg10[1520:601603] 158.6148512015-04-14 16:48:51.501 test_bg10[1520:601603] 16:48:512015-04-14 16:48:51.503 test_bg10[1520:601603] 153.6129532015-04-14 16:48:56.501 test_bg10[1520:601603] 16:48:562015-04-14 16:48:56.504 test_bg10[1520:601603] 148.6120452015-04-14 16:49:01.501 test_bg10[1520:601603] 16:49:12015-04-14 16:49:01.503 test_bg10[1520:601603] 143.6128852015-04-14 16:49:06.498 test_bg10[1520:601603] 16:49:62015-04-14 16:49:06.500 test_bg10[1520:601603] 138.6152722015-04-14 16:49:11.501 test_bg10[1520:601603] 16:49:112015-04-14 16:49:11.503 test_bg10[1520:601603] 133.6128572015-04-14 16:49:16.500 test_bg10[1520:601603] 16:49:162015-04-14 16:49:16.503 test_bg10[1520:601603] 128.6129462015-04-14 16:49:21.501 test_bg10[1520:601603] 16:49:212015-04-14 16:49:21.503 test_bg10[1520:601603] 123.6121862015-04-14 16:49:26.501 test_bg10[1520:601603] 16:49:262015-04-14 16:49:26.503 test_bg10[1520:601603] 118.6120672015-04-14 16:49:31.501 test_bg10[1520:601603] 16:49:312015-04-14 16:49:31.503 test_bg10[1520:601603] 113.6124602015-04-14 16:49:36.500 test_bg10[1520:601603] 16:49:362015-04-14 16:49:36.502 test_bg10[1520:601603] 108.6136552015-04-14 16:49:41.497 test_bg10[1520:601603] 16:49:412015-04-14 16:49:41.499 test_bg10[1520:601603] 103.6169162015-04-14 16:49:46.501 test_bg10[1520:601603] 16:49:462015-04-14 16:49:46.503 test_bg10[1520:601603] 98.6123122015-04-14 16:49:51.501 test_bg10[1520:601603] 16:49:512015-04-14 16:49:51.503 test_bg10[1520:601603] 93.6122552015-04-14 16:49:56.501 test_bg10[1520:601603] 16:49:562015-04-14 16:49:56.503 test_bg10[1520:601603] 88.6128842015-04-14 16:50:01.501 test_bg10[1520:601603] 16:50:12015-04-14 16:50:01.503 test_bg10[1520:601603] 83.6129342015-04-14 16:50:06.501 test_bg10[1520:601603] 16:50:62015-04-14 16:50:06.503 test_bg10[1520:601603] 78.6128502015-04-14 16:50:11.501 test_bg10[1520:601603] 16:50:112015-04-14 16:50:11.503 test_bg10[1520:601603] 73.6129212015-04-14 16:50:16.501 test_bg10[1520:601603] 16:50:162015-04-14 16:50:16.504 test_bg10[1520:601603] 68.6115722015-04-14 16:50:21.501 test_bg10[1520:601603] 16:50:212015-04-14 16:50:21.503 test_bg10[1520:601603] 63.6127932015-04-14 16:50:26.501 test_bg10[1520:601603] 16:50:262015-04-14 16:50:26.503 test_bg10[1520:601603] 58.6128722015-04-14 16:50:31.501 test_bg10[1520:601603] 16:50:312015-04-14 16:50:31.504 test_bg10[1520:601603] 53.6115172015-04-14 16:50:36.501 test_bg10[1520:601603] 16:50:362015-04-14 16:50:36.503 test_bg10[1520:601603] 48.6121912015-04-14 16:50:41.501 test_bg10[1520:601603] 16:50:412015-04-14 16:50:41.503 test_bg10[1520:601603] 43.6122242015-04-14 16:50:46.501 test_bg10[1520:601603] 16:50:462015-04-14 16:50:46.503 test_bg10[1520:601603] 38.6128532015-04-14 16:50:51.501 test_bg10[1520:601603] 16:50:512015-04-14 16:50:51.503 test_bg10[1520:601603] 33.6122772015-04-14 16:50:56.501 test_bg10[1520:601603] 16:50:562015-04-14 16:50:56.504 test_bg10[1520:601603] 28.6120632015-04-14 16:51:01.500 test_bg10[1520:601603] 16:51:12015-04-14 16:51:01.502 test_bg10[1520:601603] 23.6136742015-04-14 16:51:06.501 test_bg10[1520:601603] 16:51:62015-04-14 16:51:06.503 test_bg10[1520:601603] 18.6122332015-04-14 16:51:11.501 test_bg10[1520:601603] 16:51:112015-04-14 16:51:11.504 test_bg10[1520:601603] 13.6118252015-04-14 16:51:16.501 test_bg10[1520:601603] 16:51:162015-04-14 16:51:16.503 test_bg10[1520:601603] 8.612198
App執行沒多久,我就按HOME鍵,將App丟到背景去,可以看到
我建了一個計時器,每5秒就輸出現在時間以及背景可執行秒數。
結果輸出背景可執行時間一開始就只有178.多秒,然後每5秒又輸出時
真的背景可執行時間都約少了5秒。
直到只剩下8秒時,就不再輸出了,可以安全推論說,此時
App已經被suspend下來了。所以現在iOS進入背景後,可額外要求時間,
只有約3分鐘了?
留言