1

我的应用程序中有很多视图,这在启动过程中需要很多时间。我正在使用模拟器,显示屏幕大约需要 15 秒。之后应用程序运行良好。

我尝试实现 asynctask 来进行视图加载,但出现错误。Android 文档指出我不应该在 UI 线程之外设置视图。但它没有说,我不能。

如何实现加载视图的加载屏幕。删除视图不是一种选择,因为应用程序正在绘制应用程序并且需要这些视图来快速选择工具。

或者我应该在 onPostExecute() 中设置我的所有视图,然后再调用对话框关闭。但这仍然会冻结 UI 线程。我将处于同样的位置。

我没有在设备上测试过,但我知道如果 UI 线程被阻塞超过 5 秒,它会显示应用程序没有响应对话框。我想阻止它。

我的目标是 SDK 10。此外,它在实际设备上运行时是否需要相同的时间。应用程序适用于三星 Galaxy Note,非常活泼。

PS我的互联网仍然从3天下来。我正在使用我的移动客户端并参考离线 SDK 文档。

4

1 回答 1

1

直接来自文档:

“在任何视图上调用任何方法时,您必须始终在 UI 线程上。如果您在其他线程上工作并希望从该线程更新视图的状态,您应该使用处理程序。”

您的视图逻辑必须在 UI 线程上。

http://developer.android.com/reference/android/view/View.html

至于“加载”屏幕:

如果可以,尝试分离出与视图无关的逻辑并在后台线程中执行。您可以使用 更新进度条AsyncTask。覆盖onProgressUpdate() 并doInBackground()在您想要更新进度时调用 publishProgress()。或者你可以只使用不确定的进度。由你决定。

于 2012-05-10T21:11:13.830 回答