1

現在、バックグラウンド モードで TCP ソケットから読み取るためのロジックを実装しています。

CFReadStreamRead関数はソケットからデータを取得するために使用されており、今のところすべて正常に動作しています。

しかし、iPhone OS 4.x がバックグラウンド モードでブロッキング I/O 操作をどのように処理するのか疑問に思っています。例:CFReadStreamRead関数は、受信データを待機している間、何時間もブロックされる場合があります。

バックグラウンド タスクに 10 分などの公式の制約はありますか? ブロッキング I/O 操作が長時間実行された場合、アプリケーションは iPhone OS によって強制終了されますか?

注意してください -バックグラウンド タスクでブロッキング I/O 関数を実行していません。コード自体はapplicationDidEnterBackgroundmy のメソッドにありますUIApplicationDelegate

アプリケーション自体は、Info.plst ファイルの「voip」パラメータで構成されます + CFReadStream は、Apple の推奨に従ってパラメータで構成されkCFStreamNetworkServiceTypeVoIPます。

したがって、基本的にこれは、バックグラウンド モードでの VoIP アプリケーションの通常のシナリオです。

ありがとう!

4

1 に答える 1

0

に置き換えてsleep(86400)、デバッガーでアタッチし、殺されるまでの時間を確認してください。それほど長くはないと思います。applicationDidEnterBackground:タイムリーに対応する必要があります。ほぼ間違いなく、より多くの時間を与えることはありませんbeginBackgroundTaskWithExpirationHandler:

チェックしてみてください[UIApplication backgroundTimeRemaining]

于 2010-08-11T18:51:17.650 に答える