-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