Java线程通知程序 - android

时间:2014-07-15 12:47:23

标签: java android multithreading http

我的android编程有点问题。基本上我想要实现的是调用REST Web服务并在我的(现有)Activity上显示结果。

Android有一定的局限性,因此每个View on Activity都必须由最初创建它的同一个线程进行编辑。

每个http调用必须在单独的线程中。因此,由于我不是主要的Java开发人员(我做过QT),所以我做了最合乎逻辑的事情。

  • 创建单独的线程来调用我的Web服务。
  • 注册主线程作为监听器。
  • 通知工作结果的主要主题。

但是当我试图在我的监听器方法中使用该结果来更改Views我的应用程序崩溃时抛出此异常

  • 07-15 14:40:08.569:E / AndroidRuntime(12204):致命异常:Thread-31307
  • 07-15 14:40:08.569:E / AndroidRuntime(12204):android.view.ViewRootImpl $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图。

我在听众中做的是这个

@Override
public void workDone(WorkerThread thread)
{
   int a = (int)thread.getResult();
   ((ImageView)root.findViewByid(ID).setImageResource(a);
}

1 个答案:

答案 0 :(得分:2)

看一下AsyncTask,它允许你在后台线程中执行工作,然后将结果返回给主线程。

另一种方法是使用Activity.runOnUiThread回调主线程。