2012-05-10 23 views
1

私は起動時に多くの時間がかかる私のアプリでは、多くのビューがあります。 私はエミュレータを使用していて、画面を表示するのに15秒かかるようです。その後、Appは正常に動作します。asynctaskでビューを読み込み中

asynctaskを実装してビューの読み込みを試みましたが、エラーが発生しています。 Androidのドキュメントでは、UIスレッドの外側にビューを設定しないでください。 しかし、私は言いません。

ビューを読み込む読み込み画面を実装するにはどうすればよいですか。ビューをドロップすることはオプションではありません。これは、アプリケーションがアプリケーションを描画しているため、迅速なツール選択のためにそれらのビューを必要とするためです。

また、ダイアログを閉じる前に、すべてのビューをonPostExecute()に設定する必要があります。しかし、これはその時点でUIスレッドをフリーズします。そして私は同じ位置にいます。

私はデバイスでテストしていませんが、UIスレッドが5秒以上ブロックされているかどうかはわかりますが、アプリケーションが応答しないというダイアログが表示されます。私はそれを防止したい。

私はSDK 10をターゲットにしています。また、これは実際のデバイスで実行される同じ時間がかかります。アプリは、非常にうっすらですサムスン銀河ノートのためです。

P.S.私のインターネットはまだ3日からダウンです。私は自分のモバイルクライアントを使用しており、オフラインのSDKドキュメントに歓迎しています。ストレートドキュメントから

答えて

1

:任意のビュー上の任意のメソッドを呼び出すときに

「あなたは常にUIスレッド上にある必要がありますが、他のスレッドに仕事をしてからのビューの状態を更新したい場合。そのスレッド、ハンドラを使用する必要があります。

あなたのビューロジックはUIスレッド上にある必要があります。 「読み込み」画面については

http://developer.android.com/reference/android/view/View.html

関連の表示とすることができます場合は、バックグラウンドスレッドでそれを行うされていないロジックを分離するようにしてください。プログレスバーはAsyncTaskで更新できます。オーバーライドonProgressUpdate()、進行状況を更新する場合は、doInBackground()からpublishProgress()を呼び出します。または、不確定な進捗状況を使用することもできます。あなた次第。

+0

実際、ほとんどのものはビュー関連です。フィルタリングすることができるいくつかのコードがありますが、それは非常に小さい部分です。 –

+0

ビュー用のイベントハンドラの準備もUIスレッドの下にあります。 –

関連する問題