gpt4 book ai didi

Java 线程通知器 - android

转载 作者:太空狗 更新时间:2023-10-29 13:23:40 26 4
gpt4 key购买 nike

我在 android 编程方面遇到了一个小问题。基本上我想要实现的是调用 REST Web 服务并在我的(现有) Activity 上显示结果。

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

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

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

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

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

我在监听器中做的是这个

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

最佳答案

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

另一种选择是使用 Activity.runOnUiThread回调主线程。

关于Java 线程通知器 - android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24758596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com