2016-03-22 30 views
0

画面のいずれかでユーザー名とパスワードを受け入れるiPhoneアプリケーションを構築しているとします。ユーザー名を入力している間は、電話のように優先度の高いイベントが表示されます。 この時点で私のアプリはアクティブ状態から非アクティブ状態に遷移します。iPhoneアプリケーションがアクティブ状態から非アクティブ状態に遷移する

私のアプリでは、現在のアプリケーションの状態(および入力された情報)を保存して、後でそのアプリケーションがアクティブになったときに復元できるようにするために必要な手順は何ですか?

この質問は、iOSのインタビューの1つで尋ねられました。

私の答えは、部分的に入力されたユーザー情報の詳細を保存し、applicationDidBecomeActiveメソッドでそれを復元するために、applicationWillResignActiveデリゲートメソッドのアクティブから非アクティブへの状態遷移を処理することでした。アプリケーションUIの状態は、OSが処理するので処理する必要はありません。

インタビュー担当者が私の答えに納得していないようでした。彼は、アプリケーション状態が復元されたままの状態になるように、アクティブ状態から非アクティブ状態への移行、次にアプリケーションのアクティブ状態への移行をどのように処理するか(アプリケーションで実行する手順)について質問し続けましたか?

答えて

1

あなたの答えが正しいか、インタビュアーは、おそらく、これらの方法のそれぞれに名前を付けるためにあなたを探していた、あなたが最も可能性が高いだけで、あなたが述べた2つの名前付き。 applicationDidEnterBackgroundapplicationWillEnterForeground

のような特定のApp UI状態のためのいくつかの他のデリゲートメソッドがあります。これらのメソッドのデフォルトの説明をコメントに読み込むと、それぞれの用途をよりよく理解できます。たとえば、applicationWillResignActiveは、具体的には着信通話またはSMSメッセージを指します。

//アプリケーションがアクティブ状態から非アクティブ状態に近づいているときに送信されます。これは、特定のタイプの一時的な中断(着信電話やSMSメッセージなど)や、ユーザーがアプリケーションを終了してバックグラウンド状態への移行を開始したときに発生します。

//このメソッドを使用して、進行中のタスクを一時停止し、タイマを無効にし、OpenGL ESフレームレートを抑制します。ゲームはこのメソッドを使用してゲームを一時停止する必要があります。

そしてapplicationDidEnterBackgroundユーザーがアプリを閉じたときに、ユーザーデータを保存するためのものです:

//、共有リソースを解放し、ユーザーデータを保存し、タイマーを無効にし、に十分なアプリケーションの状態情報を保存するために、このメソッドを使用します後で終了する場合は、アプリケーションを現在の状態に復元します。

//アプリケーションでバックグラウンド実行がサポートされている場合、ユーザーが終了するとapplicationWillTerminateの代わりにこのメソッドが呼び出されます。

AppDelegateを確認してください。新しいプロジェクトのmファイルであり、どのステートがどのステートを処理するのか、そしていつそれぞれを使用すべきかを正確に理解するためには非常に便利です。

また、アプリケーションの状態を扱う上で、Appleのドキュメント上に必ずお読みください:The App Life Cycle

0

私はあなたがrestore stateについて多くを話していると思います。
まず、アプリケーションデリゲートのプロトコルを実装します。

func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool { 
    return true 
} 
func application(application: UIApplication, shouldSaveApplicationState coder: NSCoder) -> Bool { 
    return true 
} 

その後、あなたのViewControllerに、UIStateRestoringプロトコルを実装します。ここでは、複雑なオブジェクトをアーカイブする場合は、NSCoderを実装することを忘れないでください。
"状態の復元"に深入りしてください。

さらに、アプリがバックグラウンドになると、タイマーを停止したり、進行中のタスクを一時停止したりするなどの作業をする必要があります。
フォアグラウンドに行くときは、一時停止したタスクを開始し、ページを更新する準備をする必要があります。

+0

ありがとうございました。ここに[link](https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Strategiesfor YourAppApp/StartgiesforImplementingYourApp.html#//apple_ref/doc/uid/TP40007072-CH5-SW2)を参照してください。私はアプリの状態の保存と復旧の話を詳細に見つけました。私はこれがバックグラウンド/フォアグラウンドの状態遷移だけでなく、中断されているアプリケーションのUi復元にも適用できることを願っています(私のユースケース)。 – Marimuthu

関連する問題