1

アプリに多くのビューがあり、起動時に時間がかかります。エミュレーターを使用していますが、画面が表示されるまでに 15 秒ほどかかります。その後、アプリは正常に動作します。

ビューの読み込みを行うために asynctask を実装しようとしましたが、エラーが発生します。Android のドキュメントには、UI スレッド外でビューを設定すべきではないと記載されています。しかし、それは言いません、私はできません。

ビューをロードするロード画面を実装するにはどうすればよいですか。アプリは描画アプリケーションであり、ツールをすばやく選択するにはこれらのビューが必要なため、ビューを削除することはできません。

または、ダイアログの破棄を呼び出す前に、onPostExecute() ですべてのビューをセットアップする必要があります。ただし、これにより、その間 UI スレッドがフリーズします。そして私も同じ立場になります。

デバイスでテストしていませんが、UI スレッドが 5 秒以上ブロックされている場合、アプリが応答していないというダイアログが表示されることはわかっています。防ぎたい。

SDK 10 をターゲットにしています。また、実機で実行した場合も同様に時間がかかりますか。アプリは非常にきびきびしているサムスン ギャラクシー ノート用です。

PS 私のインターネットは 3 日前からまだダウンしています。モバイル クライアントを使用しており、オフラインの SDK ドキュメントを参照しています。

4

1 に答える 1

1

ドキュメントから直接:

「任意のビューで任意のメソッドを呼び出すときは、常に UI スレッド上にいる必要があります。他のスレッドで作業を行っていて、そのスレッドからビューの状態を更新したい場合は、ハンドラーを使用する必要があります。」

ビュー ロジックは UI スレッド上にある必要があります。

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

「ロード」画面については:

ビューに関連しないロジックを分離し、可能であればバックグラウンド スレッドで実行してください。で進行状況バーを更新できますAsyncTask。) をオーバーライドし、進行状況を更新する場合はonProgressUpdate(、publishProgress() を呼び出します。doInBackground()または、不確定な進行状況を使用することもできます。君による。

于 2012-05-10T21:11:13.830 に答える