applicationDidEnterBackgroundで誰かが実行シーケンスを説明できますか?
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), ^{
NSLog(@"\n\nRunning in the background!\n\n");
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
});
私の理解は
- バックグラウンド タスクの識別子を作成し、1 回 (10 分程度) に一度呼び出されるブロックを割り当てます。
- 非同期メソッドをディスパッチし、NSLog を出力します。この間、アプリの他のすべての方法を使用できます
- NSLog out の直後にバックグラウンド タスクを終了し、システムのデフォルトの有効期限を待たずに
具体的には、NSLog を呼び出した後
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
タスクは終了し、expirationHandler ブロックは呼び出されません。
私の認識も間違っていると思います...