2017-03-24 15 views
1

私はアプリ状態の保存と復元がアプリで機能しています。復元にはかなりのCPUが必要で、サポートされている最古のデバイスでは、アプリケーションの状態を復元するのに最大5秒かかることがあるので、アプリケーションの状態が復元されている間にアクティビティインジケータを表示したいと思います。アプリ状態が復元されている間に不確定のアクティビティインジケータが表示されますか?

override public func decodeRestorableStateWithCoder(coder: NSCoder) { 
    showActivityIndicator() 
    //just creates and adds UIActivityIndicatorView to view controller's view 
    ... 
} 

override public func applicationFinishedRestoringState() { 
    hideActivityIndicator() 
} 

を私はまた、アプリケーションの委任でUIWindowに追加しようとした:

func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool 
    showActivityIndicator() 
} 

しかし、両方の場合において、アクティビティインジケータが表示されないビューコントローラは、私が試みた復元さで

。私は、アプリケーションが復元されている間、ビューの状態を更新しないと推測しています。

アプリ状態を復元しているときに誰かがアクティビティインジケータを表示できたことがありますか?

答えて

0

復元プロセスがメインスレッドで実行される場合、アクティビティインジケータが表示されない理由があります。

バックグラウンドスレッドで復元処理を実行してください。

0

状態の復元中に表示されるのは、アプリケーションのビューではなく、状態が保持されたときのUIのスナップショットイメージです。したがって、アクティビティインジケータを含め、リストア中にビューに加えた変更は表示されません。

状態保存プロセスの一部として、UIKitはアプリケーションのユーザーインターフェイスをキャプチャし、イメージファイルに保存します。あなたのアプリが再起動されると、あなたのアプリがまだ実行されているという考えを保つために、あなたのアプリのデフォルトの起動イメージの代わりにこのスナップショットイメージが表示されます。

(から:Documentation for ignoreSnapshotOnNextApplicationLaunch())の代わりに

あなたはUIApplicationWillResignActive通知とバックグラウンドに行くのアプリをキャッチし、それらを後で復元に表示されますスナップショットに保存されるように、ビューに変更を加えることができ。これは、ユーザーが復元中にアプリケーションとやりとりできないことをユーザーが確認できるように、ボタンを無効にするなどの作業を行う場合に便利です。アプリが完全に再びアクティブになったら、これらのボタンを適切に再度有効にします。ただし、アクティビティインジケータをここに追加すると、アニメーション化されません。

また、上記のリンクignoreSnapshotOnNextApplicationLaunch()を使用すると、ユーザーに対話できないことをユーザーに明確にするために、状態の復元中に起動画面を表示できます。復元が完了すると、復元されたビューに消えます。

関連する問題