iOS アプリのフォアグラウンドを終了した後にタスクを完了するためのサポートを追加しようとしています。私がインターネットで見たすべてのチュートリアルは、アプリケーション デリゲートで次のようなものを書くことを示しています。
- (void)applicationDidEnterBackground:(UIApplication *)application {
if ([[UIDevice currentDevice] isMultitaskingSupported]) {
UIApplication *application = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier background_task;
background_task = [application beginBackgroundTaskWithExpirationHandler: ^ {
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//DO STUFF IN BACKGROUND HERE
MyTask *task = [[MyTask alloc] initWithURL:@"http://google.com"];
[task setDelegate:self];
[task start];
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
});
}
}
タスクは開始できますが、開始後、次の行が処理され、アプリが強制終了されます。デリゲート呼び出しが原因でいつMyTask
停止するかはわかりますが、デリゲートが呼び出された後にバックグラウンド タスクが無効に設定されるようにプログラムを変更するにはどうすればよいですか。移動しますか
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
デリゲート関数に、または何か他のことをする必要がありますか?
助けてくれてありがとう、Guvvy