私の iOS アプリでは、バックグラウンド スレッドでかなり大量のデータをダウンロードしています。私がする必要があるのは、ユーザーがアプリを再度開いたときに、このタスクがまだ実行されているか、キャンセルされているかを何らかの方法で確認することです。
たとえば、ユーザーがホームボタンを押してからアプリに戻った場合、スレッドは続行されます。これは良いことです。しかし、何らかの理由でスレッドが OS によって破棄された場合はどうなるでしょうか。アプリの再開で、スレッドが実行されているかどうかを知るにはどうすればよいですか。
ありがとう!
いくつかのコード:
// Starts a background thread and also allows it to run in the background if the user exits app
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIBackgroundTaskIdentifier bgTask = 0;
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[self endBackgroundUpdateTask:bgTask];
}];
// Code here to run in background
// Tell the main thread its done, and also remove itself from background execution
dispatch_async( dispatch_get_main_queue(), ^{
NSLog(@"Done with background thread");
[self endBackgroundUpdateTask:bgTask];
});