2011-11-18 263 views
1

我有一个包含100个或更多按钮的大型活动。但是一旦加载就可以正常工作。然而问题在于加载。从点击启动图标到获得第一个视图需要10-12秒。直到第一个视图,它在黑色背景中显示灰色标题栏。setContentView花费很长时间(10-15秒)执行

至少,我想在加载时显示一个简单的进度条或对话框。但似乎你不能在setContentView执行之前显示任何东西。我想我已经竭尽所能地尝试了一切。如果你能给我任何暗示或想法,我会感激。

UPDATE:

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

+0

你试过ProgressDialog吗? –

+0

你是否动态加载你的按钮,或者你有100个定义在XML中的按钮? –

+0

@Paul:你可以用Java加载它们吗? –

回答

1

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

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

+0

请分享代码。 –

0

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

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

setProgressBarIndeterminateVisibility(true); 
setProgressBarVisibility(true);