我编写了结合了小部件、服务同步小部件和用于配置小部件的活动的应用程序。
我已经开始网络传输到服务器以获取天气数据并且应用程序崩溃了。堆栈调试后,我在主线程异常中有网络。
经过一段时间的谷歌搜索,我已经将所有网络通信重写为 AsyncTask 但是......运行应用程序给了我错误
只有创建视图层次结构的原始线程才能接触其视图。
现在我卡住了 - http 客户端获取的数据必须推送到一组 LinearLayouts 和 TextViews/ImageViews 中。7 天的天气给了我很多——比 layout.xml 可以处理的还要大。
我在问 - 如何在线程中运行 HTTP 同步(因为主线程网络访问给了我异常)并通过 View.add(object) 在线程中同步视图给了我:
> E/AndroidRuntime(965): FATAL EXCEPTION: AsyncTask #1
> E/AndroidRuntime(965): java.lang.RuntimeException: An error occured while executing doInBackground()
> E/AndroidRuntime(965): at android.os.AsyncTask$3.done(AsyncTask.java:278)
> E/AndroidRuntime(965): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
> E/AndroidRuntime(965): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
> E/AndroidRuntime(965): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
> E/AndroidRuntime(965): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
> E/AndroidRuntime(965): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
> E/AndroidRuntime(965): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
> E/AndroidRuntime(965): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
> E/AndroidRuntime(965): at java.lang.Thread.run(Thread.java:856)
> E/AndroidRuntime(965): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
有任何想法吗?