0

これは私のアクティビティ(スニペット)です:

setContentView(R.layout.main)
//Some Time consuming code


ご覧のとおり、時間のかかるコードは。の後に配置されていsetcontentviewます。このアクティビティの読み込みには時間がかかります。時間のかかるコードを削除すると、アクティビティが非常にすばやく表示されることを確認します。私の質問はsetContentView、レイアウトの後でのみ時間のかかる作業を行っているのに、少なくともレイアウトの表示に時間がかかるのはなぜですか。

4

3 に答える 3

4

アプリはシングルスレッドUIスレッドで実行されています。他のすべての実行が完了するまで、ビューを表示することはできません。

AsyncTask時間のかかるコードには、またはスレッドを使用する必要があります。これを見てください:http://developer.android.com/resources/articles/painless-threading.html

于 2012-05-09T10:44:07.743 に答える
2

時間のかかるタスクはすべて、UI以外のスレッドで実行する必要があります。AsyncTaskの使用を検討してください。質問に答えるために、アクティビティはonCreateメソッド全体が終了したときにのみ表示されます。そのため、コンテンツビューを設定し、onCreateメソッドの残りの部分(時間のかかるコード)を実行してから表示します。

参考までに、AsyncTaskのドキュメントは次のとおりです。http://developer.android.com/reference/android/os/AsyncTask.html

于 2012-05-09T10:46:27.493 に答える
1

onResume()メソッドで時間のかかる作業をすべて行う必要があります。そうすれば、onCreate()メソッドを完了するのにかかる時間が短くなり、レイアウトの読み込みが速くなります。

于 2012-05-09T10:47:33.577 に答える