这是我的活动(片段):
setContentView(R.layout.main)
//Some Time consuming code
如您所见,耗时的代码放在setcontentview
. 此活动需要很长时间才能加载。确认我删除了耗时的代码并且活动显示非常快。我的问题是我只是在setContentView
布局之后才做耗时的工作,那么为什么至少要显示布局需要这么多时间。
这是我的活动(片段):
setContentView(R.layout.main)
//Some Time consuming code
如您所见,耗时的代码放在setcontentview
. 此活动需要很长时间才能加载。确认我删除了耗时的代码并且活动显示非常快。我的问题是我只是在setContentView
布局之后才做耗时的工作,那么为什么至少要显示布局需要这么多时间。
该应用程序在单线程 UI 线程上运行。在完成其他所有操作之前,它无法显示视图。
您需要AsyncTask
为任何耗时的代码使用一个或一个线程。看看这个:http: //developer.android.com/resources/articles/painless-threading.html
每个耗时的任务都应该在非 UI 线程中完成。考虑使用 AsyncTask。要回答您的问题,只有在整个 onCreate 方法完成后才会显示活动。所以它设置它的内容视图,然后它执行 onCreate 方法的其余部分(你的耗时代码)然后它显示。
供您参考,这里是 AsyncTask 的文档:http: //developer.android.com/reference/android/os/AsyncTask.html
您应该在 onResume() 方法中完成所有耗时的工作。那么完成 onCreate() 方法可能需要更少的时间,并且您的布局将加载得更快。