2017-02-18 5 views
0

beginBackgroundTaskWithExpirationHandlerを数分おきに定期的に電話し、endBackgroundTaskに決して電話をかけるとどうなりますか?バックグラウンドタスクには制限がありますか?

バックグラウンドタスクの作成に制限はありますか?

+0

あなたのアプリがフォアグラウンドであるかどうかによって異なります。 – rmaddy

+0

@rmaddyアプリはいつもバックグラウンドにありますか? –

+1

アプリがバックグラウンドでこのメカニズムで生きていて、 'endBackgroundTask'の呼び出しを怠った場合、OSはあなたのアプリを(正常に停止させるのではなく)殺します。ですから、タイムアウトブロックでのみこれをやっているとしても、通常は 'endBackgroundTask'を呼び出すことになります。 – Rob

答えて

3

私はbeginBackgroundTaskWithExpirationHandler定期的にすべての分を呼び出して、決して何も起こりませんendBackgroundTask

  • を呼び出す場合はどうなります。その名前にもかかわらず、beginBackgroundTaskWithExpirationHandler:は実際にタスクを開始しません。それは、 "始める"よりもむしろ "登録する..."と考えるのが良いかもしれません。あなたは、あなたが完了したいと思っていることをやっていることをシステムに伝えているだけです。

バックグラウンドタスクの作成には制限がありますか?

  • 号しかし、実行中のアプリのバックグラウンドタスクは、それらを実行するための有限の時間を持っています。 (backgroundTimeRemainingプロパティを使用すると、使用可能な時間がわかります)。各タスクのendBackgroundTask:を時間切れにする前に呼び出さないと、システムはアプリケーションを終了します。 handlerパラメータにブロックオブジェクトを指定すると、システムは、タスクが終了する機会を与えるために、時間が切れる前にハンドラを呼び出します。

Thisおよびthisです。

+0

私のタスクに実行する時間が増える場合は、場所やその他の項目をチェックして有効期限をリセットする方法はありますか? –

+0

はい、フォアグラウンドでのダウンロードを開始するアプリは、ダウンロードの管理をシステムに渡すことができるため、ダウンロードの継続中にアプリが一時停止または終了することがあります。これはあなたがそれを実装するのに役立ちます=> https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html – ystack

+0

expirationHandlerの中にnewTaskを登録するとどうなりますか?あなたはOSがあなたに疲れてくるまで、さらに多くを得るだろうか?それとも、静かに失敗するだろうか? – Honey

関連する問題