0
我需要在用戶進入後臺狀態時運行一些代碼。我在iOS 9上進入後臺時的默認時間是10秒。我需要比多一點,所以我發現,這個代碼將時間延長到3分鐘:iOS限制後臺時間
- (void)extendBackgroundRunningTime {
if (_backgroundTask != UIBackgroundTaskInvalid) {
// if we are in here, that means the background task is already running.
// don't restart it.
return;
}
NSLog(@"Attempting to extend background running time");
__block Boolean self_terminate = YES;
_backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithName:@"DummyTask" expirationHandler:^{
NSLog(@"Background task expired by iOS");
if (self_terminate) {
[[UIApplication sharedApplication] endBackgroundTask:_backgroundTask];
_backgroundTask = UIBackgroundTaskInvalid;
}
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"Background task started");
while (true) {
NSLog(@"background time remaining: %8.2f", [UIApplication sharedApplication].backgroundTimeRemaining);
[NSThread sleepForTimeInterval:1];
}
});
}
然而,我的任務並不需要所有這些額外的時間,我想作爲保護儘可能多的電池。有什麼方法可以使用這個或類似的代碼來獲得1分鐘的背景時間,或者10到180秒之間的其他值嗎?
您無法控制剩餘的背景剩餘時間。您只能開始/結束後臺任務。有時180秒可以延長,我無法複製它,但這是隨機發生的。 – Vasanth