2

ユーザーがアプリを一時停止したときに、バックグラウンド タスクを使用していくつかの操作を完了しています。これは正常に動作しますが、バックグラウンド タスクが終了する前にユーザーがアプリを再アクティブ化すると、画面が黒のままになり、applicationWillEnterForeground: が呼び出されないことに気付きました。

バックグラウンド タスクが完了すると、再び問題なく applicationWillEnterForeground が呼び出されますが、タスクの実行中にアプリを再アクティブ化する方法はありますか?

私が見つけたのは、バックグラウンド タスクで常に残り時間をチェックし、アプリが再アクティブ化されると残り時間が非常に長くなることだけです。その後、それ自体が終了してアプリが表示されますが、これはアプリが 0.5 秒ほど黒いままであることを意味します。

4

1 に答える 1

0

簡単な質問です。beginBackgroundTaskWithExpirationHandler を使用していますか?

そして、実際の作業を非同期で実行していますか? この回答に示されているように? 目標 c - beginBackgroundTaskWithExpirationHandler の適切な使用

そうでない場合は、メインの RunLoop の一部として実行されるため、長時間実行される作業を非同期で実行する必要があります。これにより、実行時間の長いタスクが完了するまで、アプリの再描画と応答性が実際にブロックされます。

于 2012-11-16T21:01:08.883 に答える