私は、Xamarinクロスプラットフォームを使用して、iOSとAndroidの両方のアプリケーションを構築しています。私は「コア」と呼ばれるプロジェクトを1つ、次にiOSとAndroidのプロジェクトを持っています。Xamarin androidとiosでスレッドをスリープする方法は?
共有「コア」プロジェクトでは、デバイスから現在の場所を取得しながら、作成した読み込みアニメーションを表示したいと思います。私は自分のlocationWatcherを取得して起動し、LocationWatcher.CurrentPositionを直接呼び出すことができますが、場所の更新を監視し始めたばかりなので、まだ場所を取得する時間がありません。
私の解決策は、起動後2秒間待ってから場所を取得することです。しかし、私は非同期的に待ってはいけません。待っている間UIをロックしておきたいです。これは、現在の位置がわかるまでユーザーが何もすることができないためです。
私は現在のループを持っていることによって、これを達成:
DateTime startTime = DateTime.Now();
while ((DateTime.Now() - startTime).TotalMilliseconds() < 2000) {
//Locking the UI here, but it's what I want so it's ok.
}
これは、Javaで単純に「のThread.sleep(2000年)、」
があるのだろう何かのための醜い「ハック」のように思えますこれを行う良い方法は?
両方の答えはうまくいきますが、投稿されているように、実際には**悪い**実用的ですあなたのメインのUIスレッドをブロックするために、余分なUIブロッキングがOSによって終了されたアプリケーションを取得し、それがアプリケーション提出を失敗させる原因になることを覚えておいてください。 IMO、スクリーンにthumperを置き、非同期の呼び出しをする... – SushiHangover
いいコメント、私は主にUIスレッドをブロックしないようにしようとしています。なぜなら、ロードアニメーションを正しく動作させることができなかったからです。実際に結果を待っている間にユーザーが激しくクリックしていました。私はその作業を "待っているタスク。Delay(ms)"で試してみます。 – JavaDevSweden