1

私のアプリケーションでは、を使用して別のスレッドである時点でデータをダウンロードおよびアップロードしていますNSOperation。両方のプロセスは約かかります。2〜3分 アプリケーションがアクティブなままの場合、すべてが正常に機能します。ただし、iPadの画面が(自動または手動で)ロックされている場合、アプリは非アクティブになり、ダウンロード/アップロードが一時停止します。また、タイムアウトエラーでプロセスが失敗した後、画面のロックが解除されます。

plistファイルに「必要なバックグラウンドモード」の「アプリがオーディオを再生します」があります。画面がロックされているときにアプリを実行するために他のフラグを設定する必要がありますか?

何が悪いのか助けてください。

4

1 に答える 1

8

画面がロックされると、アプリは非アクティブになります。iOS App Programming Guide の「Responding to Interruptions」に従って:

スリープ/スリープ解除ボタンを押すことは、アプリを一時的に無効にする別のタイプの中断です。ユーザーがこのボタンを押すと、システムはタッチ イベントを無効にし、アプリをバックグラウンドに移動しますが、アプリの applicationState プロパティの値をUIApplicationStateInactive( ではなくUIApplicationStateBackground) に設定し、最後に画面をロックします。

同じガイドの「バックグラウンドでの有限長タスクの実行」に従って、バックグラウンド タスクに追加の時間を取得できます。

バックグラウンドに移行するアプリは、重要な土壇場のタスクを完了するために追加の時間を要求できます。バックグラウンド実行時間を要求するには、クラスのbeginBackgroundTaskWithExpirationHandler:メソッドを呼び出します。UIApplicationタスクの進行中にアプリがバックグラウンドに移行した場合、またはアプリが既にバックグラウンドにあった場合、このメソッドはアプリの一時停止を遅らせますこれは、ユーザー データをディスクに書き込んだり、ネットワーク サーバーから重要なファイルをダウンロードしたりするなど、アプリが重要なタスクを実行している場合に重要です。

ドキュメントを参照して、バックグラウンドで有限長のダウンロード タスクを実装できます。

その他の参照:

于 2012-05-08T06:44:01.423 に答える