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

标签 android user-interface

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

至少,我想在加载时显示一个简单的进度条或对话框。但似乎在执行 setContentView 之前您无法显示任何内容。我想我已经尽我所能,但没有成功。如果您能给我任何提示或想法,我将不胜感激。

更新:

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

最佳答案

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

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

中隐藏 progressBar

关于android - setContentView 需要很长时间(10-15 秒)才能执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8180072/

相关文章:

Android SDK 工具 21 : Help in Compile with tab

android - 从android中的矩阵获取旋转值?

android - 无法从 gcm 获取注册 ID

python - 列出带有子选项的 tkinter 组合框选项

java - 在 GUI 中发生异常后我该去哪里?

android - 获取 View 属性的资源id

java - 下次显示父对话框时处理 JDialog 的子 JDialog

java - Libgdx 如何实现选中按钮列表?

java - Spring Boot Main 和 JavaFX

java - 检查对象是否为空