-2

while(1)バックグラウンドでいくつかのサービスを実行しようとしていたので、バックグラウンド デリゲートでしばらくの間ループを使用して、バックグラウンドでコントロールを攻撃しました。エミュレーターでは正常に動作していますが、iPad に転送すると、バックグラウンドに入った後にアプリがクラッシュします。

while(1)デバイスでループが機能しませんか?

4

1 に答える 1

0

エミュレーターでは正常に動作していますが、iPad デバイスに転送すると、バックグラウンドに入った後にアプリがクラッシュします。

あなたが書いていることを正しく解釈すると、アプリが「バックグラウンドである」ときにアプリでスレッドを実行することが、いくつかの予備的なケースを除いて許可されていないという理由だけで、iOS デバイスでアプリが強制終了されると思います。 」 (つまり、ユーザーがホームボタンをクリックして「終了」した後)。

したがって、何が起こっているのかを読んでいるのが正しければ、アプリが特定のクラスのアプリに属しているか (後述)、実行できる唯一のことは、限られた時間だけバックグラウンド スレッドを「登録」することです。アプリがバックグラウンドになった後。

バックグラウンド実行とマルチタスクからの抜粋

ほとんどのアプリは、バックグラウンドに入った直後に一時停止状態に移行します。ユーザーに重要なサービスを提供するアプリのみが、任意の時間実行し続けることが許可されます。

可能な限り、バックグラウンドでの実行を避け、アプリを一時停止することをお勧めします。バックグラウンド タスクを実行する必要がある場合は、それが適切な場合のガイドラインを次に示します。

いくつかの特定のユーザー サービスの少なくとも 1 つを実装する必要があります。

単一の有限長タスクを実行する必要があります。

「長時間実行されるバックグラウンド タスクの実装」に特に興味があるかもしれません。

実装するのにより多くの実行時間を必要とするタスクについては、特定のアクセス許可を要求して、一時停止せずにバックグラウンドで実行する必要があります。iOS では、特定の種類のアプリのみがバックグラウンドで実行できます。

音楽プレーヤー アプリなど、バックグラウンドでユーザーに可聴コンテンツを再生するアプリ

ナビゲーション アプリなど、常にユーザーに現在地を知らせるアプリ

Voice over Internet Protocol (VoIP) をサポートするアプリ

新しいコンテンツをダウンロードして処理する必要がある Newsstand アプリ

外部アクセサリから定期的にアップデートを受信するアプリ

于 2012-08-06T05:57:31.347 に答える