2017-04-02 10 views
4

バックグラウンドタスクをプログラムできる必要があります。リトル "crons"場合は、いくつかの簡単なコードを実行します。 GCDの専門家をされるわけではないが、私は思っていた:GCDバックグラウンドタスクの最大TTL

はバックグラウンドタスクが実際にアプリを前に、バックグラウンドでその職務を行うためにのために私が期待最大時間は何である
  1. quitsが完全に
  2. することができます私の「プログラム」は、複数のタスクを適時に完了するようにしてください
  3. アプリが起動されている間だけ有効ですか? (地元の通知とは異なり、アプリがバックグラウンドで実行されているかどうかは気にしないので、確認するだけです)
  4. どうすればそれらを追跡し、必要に応じてキャンセルできますか?

    たとえば、私はこのようなことをすることができ、タスクが実行されます。私はここまで1分ほど行きました。

    let backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: nil) 
    DispatchQueue.main.asyncAfter(wallDeadline: DispatchWallTime.now() + 60) { 
          // Some action here 
          UIApplication.shared.endBackgroundTask(backgroundTaskIdentifier) 
    }) 
    
+0

[Appleがバックグラウンドタスクを実行する時間はどのくらいですか?](http://stackoverflow.com/questions/28275415/how-long-does-apple-permit-a-background-task-to- –

+0

複数の質問がありますが、複数の質問を投稿する前に、それらを個別に検索し、重複を除外する必要があります。あなたがして、あなたの質問を編集し、私を打つ私は重複フラグを削除します。 –

答えて

0

あなたはbackgroundTimeRemaining(ドキュメントhere)を使用して、特定のセッションの残り時間を印刷することができます。 Appleは今回が何であるかについて保証しません。バッテリーレベル、ハードウェア、リソースなどによって異なりますので、長時間実行される永続的なバックグラウンドタスクにはあまり役に立たないでしょう。 background fetch APIも同様ですが、これは同様にiOSによって抑制され、実行時を完全に制御することはできません。

関連する問題