私はデータベースに画像ファイルの配列をアップロードする必要があるので、Appleのバックグラウンド実行ガイドユーザーがアプリを一時停止または終了した場合でも、アプリがデータをアップロードし続けることを確認します。
しかし、説明には、バックグラウンド タスクをgiving it a little extra time to finish its work
呼び出すかbeginBackgroundTaskWithName:expirationHandler:
、開始するかが記載されています。beginBackgroundTaskWithExpirationHandler:
正確にはどのくらいですかlittle extra time
?
ベストアンサー1
間違っていたら訂正してください。でも、私は偶然完璧な記事iOS のバックグラウンド処理機能について説明する Xamarin からの資料です。
簡単に言えば、iOS 7 以前と iOS 7 以降の 2 つの部分に分けて説明します。
iOSバージョン7以前
答えは単純に
600
数秒(10 分)です。理由は上記の記事に記載されています。
iOSバージョン7以降
答えは、時間配分システムが日和見主義的であるということです。@Gary Riches の提案に従う必要があります。
NSLog(@"残り時間: %f", [[UIApplication sharedApplication] backgroundTimeRemaining]); を使って調べてください。これが日和見的である理由は、iOS 7 以降ではバックグラウンド タスクの処理方法が完全に異なり、確実に最適化されているためです。正確に言うと、断続的な動作をするため、大量のデータのダウンロードなどのバックグラウンド タスクが必要な場合は、代わりに `NSURLSession` を使用する方がはるかに効果的です。
ただし、私の特殊なケースでは、正確には 1 つのファイルを含む 1 つのオブジェクトをアップロードしています。NSURLSession
少量のデータをアップロードすることを考慮する必要はありません。また、アップロード タスクには、必要なだけ時間がかかることがあります。 :-)
このような訪問者にとってはTL;DR
、上記の回答で十分でしょう。詳細については、上記の記事を参照してください。