私はXamarin.iOSアプリをやっています。私の呼び出しが完了するまでUIスレッドをブロックしてから再開
アプリが使用されているときに呼び出すのではなく、アプリが読み込まれる前にAPIから顧客/ショッピングデータを取得したい(データをプリロードする)。私はAppDelegateに物事を掛ける必要があると思ったので、私のAPIコールが完了するまでスプラッシュスクリーンに詰めておくことができます。アプリケーションの起動時にユーザーがログインしているとします。
public async Task<CustomerShoppingSummary> GetCustomerShoppingSummary()
しかし、それは私がのviewDidLoad中または他の分野でそれを呼び出していた:私は、アプリの他の部分から非同期呼び出した
私の非同期メソッドがあります。私は今、アプリが始まる前にすべての情報を得たいと思っています。だから間違いなく、アプリケーション全体を永久に停止するか(.resultを使って、終了時に停止させる方法を見つけ出していない)、または非同期に実行させることができました。論理が完了する。
私はこれをAppDelegateで/どのような方法でお勧めしますか?
たぶん
public override void OnActivated(UIApplication application)
同期これを実行し、完了するまでUIスレッドをブロックするために、任意の勧告?
ありがとうございます!
あなたのUIスレッドをブロックしないでください。それはプログラミングではしばしば「それは決して良いアイデアだ」と言うことはできませんが、決して決して言うことはありません。 –
アプリが起動する前にデータを読み込みたい - そうでない場合は画面に表示され、そのデータは表示されません。 – NullHypothesis
まだデータがない場合でも、反応しやすいライブUIが表示されます。起動時にアプリがハングアップすると、それはスピナーで空になるよりはるかに悪いユーザーエクスペリエンスです。どちらかといえば長い間待っていますが、あなたの考えでは、もっと迷惑です。ユーザーはハングするアプリケーションを嫌う。 –