如何同时加载复杂视图

时间:2010-08-10 23:35:12

标签: android multithreading concurrency handler android-asynctask

我有一个创建自定义视图的Android活动,这是一个昂贵的过程。我尝试使用Handler,但是当我这样做时,显示的进度对话框每5秒旋转一次。所以我尝试使用AsyncTask。现在progressDialog旋转,但随后它崩溃了,因为它不允许加载UI?如何在不得到ANR的情况下做到这一点?

08-10 19:28:21.313: ERROR/AndroidRuntime(1428): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

1 个答案:

答案 0 :(得分:1)

  

我有一个创建自定义视图的Android活动,这是一个昂贵的过程。

使用Traceview或其他工具来改善您的表现。自定义视图的创建本质上并不昂贵。

  

所以我尝试使用AsyncTask。现在   progressDialog旋转,但随后旋转   崩溃,因为它是不允许的   加载UI?

您通常无法在后台线程中执行与UI相关的工作。有些小心,您可以构建小部件,但绝对不能将它们附加到屏幕上(即,它们不能作为内容视图的子节点引用)。

  

如何在不获得ANR的情况下执行此操作?

我会专注于修复您的性能问题,使用Traceview或其他工具来了解您的时间花费的根源。