2017-01-05 4 views
6

私のアプリはバックグラウンドの場所の更新をサポートしています(特に重要な場所の監視が必要です)。iOSアプリがバックグラウンドで起動されたときにUIを避けるべきですか?

アプリがバックグラウンド(​​)であることを識別すると、UI(コントローラなどを介して)が読み込まれないようにする必要がありますか?

私の意図は、バックグラウンドで重いUIの読み込み(BIGアプリ)を避けることです。これは、実際には場所の更新に応答するためにバックグラウンドにある限られた時間を無駄にする可能性があります。

例えば(にObjCではなく、質問はスウィフトのためでもある)、のは、私が初期化され、全体のコントローラ/ビュー階層を保持しているいくつかのRootViewControllerを持っているとしましょう、私は、viewDidLoadで実行する必要があります。

if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { 
    // Root view controller loaded while in background, so doing only background stuff 
    [self justDoBackgroundStuffWithoutUI]; 
} else { 
    // Root view controller loaded normally, so loading normal UI 
    [self initializeUIAndChildControllers]; 
} 

?または、iOSがバックグラウンド状態にあることを知っているので、これらのUIタスクをすべて無視するだけで「信頼する」必要がありますか?

+2

これを処理するためにiOSを信頼することはできますが、osに組み込まれたUIをバックグラウンド状態でレンダリングすることはありません。基礎となるUIKitフレームワークは、アプリケーションが実際にレンダリングする必要があるかどうかを決定します。ビューコントローラのアプリケーションライフサイクルイベントは、ほとんどの場合、ユーザーインタラクションに応答します.ViewDidLoadとviewDidAppearが実行されると、残りの部分は実際に実行されます。アプリがフォアグラウンドにない間は実行されません。 – Scriptable

+0

私のコントローラーが、例えば 'viewDidLoad'で自動的にたくさんの画像をダウンロードしているとすれば、それは私が推測しているように、OSによって無視されないでしょう。おそらく 'UIImageView'aはレンダリングされませんが、データと' UIImage'sが実際にロードされます。 – mllm

+0

この場合、ネットワークは依然として「必要があります」と要求しますが、アプリケーションがバックグラウンドになると、残りのタスクは一時停止/終了する前に完了した時間が限られます。それは無期限に実行し続けるだけではありません。 – Scriptable

答えて

4

あなたはそれらを無視して、長時間実行しているBGタスクがある場合は完了するまで時間がかかっていない可能性があるので注意してください。タスクを永遠に実行します。

1

バックグラウンドでUIを更新する必要はなく、混乱し、効率的ではありません。

  • このアプリを使用していないユーザーには付加価値がないため、不要です。 viewWillAppearでの簡単な処理で十分です。
  • 混乱ユーザーが画面が表示されているときに変更が反映されることを期待している可能性があるため、私はあなたのアプリについてはわかりませんが、これはビジネス上の選択肢です。あなたはgmail/whatsappのような変更を表示する方法で似たようなものを持っていて、ユーザーにの新しいメールを見せてもらいたいかもしれません。
  • あなたは何か電池を使いすぎているので、効率的ではありません。あなたは "重いUIの読み込み"と言っていました。場所が何度も何度も何度も変わるとどうなりますか?変更が不要になったという意味で変更を無効にすることができます。または、変更を必要とせずに常に必要になります。

要約すると:私はUIの更新をしないと言っているわけではありません。すべてのアプリはスイートスポットを持っています。おそらくあなたはそれらの大部分を行う必要はなく、変化を読み込むことを怠ることはないでしょう。すなわち、画面の読み込み時にはより良い方法と思われます。私は気づいていない高度なガイドラインがあると確信していますが、うまくいけば、他の答えが来るだろう。

関連する問題