-1

私たちの iOS アプリは、新たに開始されるたびに、つまりバックグラウンドから再開されるのではなく、新しいアプリ データを取得します。アプリのデータは Web サービスを介して数か月ごとに定期的に更新されるため、通常はこれで問題ありません。

ただし、ユーザーの iOS デバイス (具体的には iPad) がアプリをバックグラウンドで長時間 (場合によっては無期限に) 一時停止したままにするという、まれなケースが発生する可能性があります。

iOS に「数時間以上停止されている場合は、このアプリをリリースしてください」と伝えることで、このエッジ ケースを軽減することはできますか?

4

2 に答える 2

3

あなたが説明する問題は、アプリの設計が不十分であるか、アプリのアーキテクチャがよく理解されていないことが原因です。アプリがアクティブになるたびにアプリのデータを更新する必要がある場合は、UIApplicationDelegateイベントから更新関数を呼び出す (または通知を登録する) ことができます。具体的には次のとおりです。

applicationDidBecomeActive:

アプリケーションがアクティブになったことをデリゲートに伝えます。- (void)applicationDidBecomeActive:(UIApplication *)アプリケーション パラメータ

応用

The singleton application instance.

討論

このメソッドは、非アクティブ状態からアクティブ状態に移行したことをアプリケーションに知らせるために呼び出されます。これは、アプリケーションがユーザーまたはシステムによって起動されたために発生する可能性があります。アプリケーションを一時的に非アクティブ状態にした割り込み (電話や SMS メッセージの着信など) をユーザーが無視することを選択した場合、アプリケーションはアクティブ状態に戻ることもあります。

このメソッドを使用して、アプリケーションが非アクティブなときに一時停止された (またはまだ開始されていない) タスクを再開する必要があります。たとえば、タイマーを再起動したり、OpenGL ES フレーム レートを調整したりするために使用できます。アプリケーションが以前バックグラウンドにあった場合は、それを使用してアプリケーションのユーザー インターフェイスを更新することもできます。

このメソッドを呼び出した後、アプリケーションは UIApplicationDidBecomeActiveNotification 通知も投稿して、関心のあるオブジェクトに遷移に応答する機会を与えます。可用性

于 2013-02-07T23:34:28.513 に答える
0

アプリが中断されている場合、更新されるべきではありません。Apple のドキュメントによると、アプリが特定のバックグラウンド プロセスのいずれかに登録されていない限り、アプリは再開するまで基本的に凍結されます。ネットワーク呼び出しが行われてはなりません。

ただし、あまりにも長い間中断されたアプリを強制終了したい場合は、バックグラウンド タイマーを 10 分間登録するハックを実装し、10 分後にクラッシュすることがわかっているガベージ コードを呼び出すことができます。問題が解決しました :)

于 2013-02-07T23:38:33.440 に答える