2

これは、アプリがバックグラウンドから戻ったときに実際に何が起こるかについてのかなり一般的な質問です。1日以上使用していないアプリを開くと、アプリを閉じる前と同じビューが表示されるとユーザーが言っています(「閉じた」とは、ホームボタンを押しただけという意味です)バックグラウンドに送信するには、長押しせずに十字ボタンをタップしてアプリを完全に終了します)。

久しぶりにアプリをバックグラウンドから復元すると、完全にリロードされて (スプラッシュ画面とすべてが表示されます)、Facebook や Gmail アプリを使用していないときに開いた場合のように感じました。しばらくの間。

だから私の質問は、アプリがバックグラウンドに送信されてから経過した期間のどこかにチェックを実装し、特定のしきい値を超えたときにすべてをリセットする必要がありますか、それとも iOS 自体によって処理されるはずですか...もちろん、ユーザーがアプリをバックグラウンドに送信し、2 分後に戻ってきた場合、更新したくありません。

4

2 に答える 2

2

タイムスタンプを設定して、 appdelegate メソッドでそれを処理する必要がある場合があります。iPhoneではマルチタスクが有効になっているため、また同じ画面から起動します。ユーザーがアプリを強制終了するまで、アプリは長時間バックグラウンドにある可能性があります。

デリゲート メソッドの一部は次のとおりです。

- (void)applicationWillResignActive:(UIApplication *)iApplication;
- (void)applicationDidEnterBackground:(UIApplication *)iApplication;
- (void)applicationWillEnterForeground:(UIApplication *)iApplication;
- (void)applicationDidBecomeActive:(UIApplication *)iApplication;

マルチタスクを無効にしたい場合はUIApplicationExistsOnSuspend 、アプリケーションの plist にキーを設定することで無効にできます。ただし、ユーザーがホームボタンを押すと、アプリはすぐに終了します。

于 2012-10-12T05:44:27.743 に答える
1

バックグラウンドで一定期間後にアプリを更新するかどうかの決定は、完全にあなたとアプリのニーズに依存します。アプリは、OSに殺されることなく、何週間もバックグラウンドにとどまることができます。または、バックグラウンドに入ってから数秒後に殺される可能性があります。それはすべて、実行中の他のアプリに必要なリソースに依存します。

たとえば、アプリに24時間後に再起動するロジックが必要な場合は、これを処理するコードを作成する必要があります。アプリがバックグラウンドに移行したときにタイムスタンプを保存します。フォアグラウンドに戻ったら、現在の時刻を保存されているタイムスタンプと比較します。十分な時間が経過した場合は、ユーザーに表示したい状態を反映するようにUIを更新する必要があります。

于 2012-10-12T05:49:21.230 に答える