-2
我想運行後臺任務。用於檢查網絡連接,即使該應用程序在後臺3分鐘後停止後臺任務
-(void) beginBackgroundUploadTask
{
isBackGroundRunning = YES;
if(self.backgroundTask != UIBackgroundTaskInvalid)
{
[self endBackgroundUploadTask];
}
self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"Background Time Remaining :%f",[[UIApplication sharedApplication] backgroundTimeRemaining]);
}];
}
-(void) endBackgroundUploadTask
{
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask ];
self. backgroundTask = UIBackgroundTaskInvalid;
}
-(void) initializeUpdateTimer
{
a= 0;
[self.updateTimer invalidate];
self.updateTimer = [NSTimer scheduledTimerWithTimeInterval:5
target:self
selector:@selector(checkNetWorkStatus)
userInfo:nil repeats:YES];
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground){
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
[[NSRunLoop currentRunLoop] addTimer:self.updateTimer forMode:NSDefaultRunLoopMode]; //NSDefaultRunLoopMode
[[NSRunLoop currentRunLoop] run];
});
}
}];
}
我initializeUpdateTimer
功能時應用涉及到背景。 3分鐘後自動停止任務。 是否可以延長30分鐘的時間?
您無法在後臺啓動計時器。 – matt
@matt:是否有任何方法可以從至少30分鐘的背景中檢查網絡狀態。 –
你爲什麼需要這樣做?如果您的應用程序處於後臺,它不會運行,並且網絡狀態對您無關緊要。如果您正在嘗試執行後臺上傳/下載或嘗試在後臺調用以執行網絡任務,那麼有很好的方法可以做到這一點。但是你的代碼不是這樣。 – matt