我有一个创建自定义视图的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.
答案 0 :(得分:1)
我有一个创建自定义视图的Android活动,这是一个昂贵的过程。
使用Traceview或其他工具来改善您的表现。自定义视图的创建本质上并不昂贵。
所以我尝试使用AsyncTask。现在 progressDialog旋转,但随后旋转 崩溃,因为它是不允许的 加载UI?
您通常无法在后台线程中执行与UI相关的工作。有些小心,您可以构建小部件,但绝对不能将它们附加到屏幕上(即,它们不能作为内容视图的子节点引用)。
如何在不获得ANR的情况下执行此操作?
我会专注于修复您的性能问题,使用Traceview或其他工具来了解您的时间花费的根源。