setContentView需要很长时间(10-15秒)才能执行

时间:2011-11-18 09:10:52

标签: android user-interface

我有一个包含100个或更多按钮的大型活动。但是一旦加载它就能正常工作。然而问题是加载。从单击其启动图标到获取第一个视图需要10-12秒。在第一个视图之前,它在黑色背景中显示灰色标题栏。

至少,我想在加载时显示一个简单的进度条或对话框。但似乎在setContentView执行之前你无法显示任何内容。我想我已经尽力而为但没有成功。如果你能给我任何暗示或想法,我会很感激。

更新

我找到了戏剧性的解决方案。加载视图现在需要一秒钟。我根本没有使用启动,线程或异步任务 - 顺便说一句,不要尝试在UI上使用线程或异步,因为Android UI不是线程安全的。问题是这些按钮是基于一个自定义类,需要初始化来加载相同的资源。 - 所以在setContentView上发生了100个或更多的文件操作。使它们成为一个单一的装载解决了我的问题。

2 个答案:

答案 0 :(得分:1)

您正在相同的UI线程上加载数据,因此在加载期间不会显示任何内容。 使用Async Task加载单独的帖子。

1)在onPreExecute()中显示progressBar 2)在doInBackground()中加载数据。这里没有UI相关的东西 3)更新UI上的更改,隐藏onPostExecute()

中的progressBar

答案 1 :(得分:0)

在调用setContentView()之前使用此代码。也许有帮助。

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
requestWindowFeature(Window.FEATURE_PROGRESS);

setProgressBarIndeterminateVisibility(true);
setProgressBarVisibility(true);