如何从衍生的后台服务访问原始活动的意见后台、原始、意见

由网友(挽歌°)分享简介:我有一个活动叫A,并在菜单项0的选择,它生成服务B,这将启动一个可运行的下在一个新的线程。我有一个TextView的活性的,我想在线程C.访问I have an activity called A, and on the selection of menu item 0, it spawns service B, w...

我有一个活动叫A,并在菜单项0的选择,它生成服务B,这将启动一个可运行的下在一个新的线程。我有一个TextView的活性的,我想在线程C.访问

I have an activity called A, and on the selection of menu item 0, it spawns service B, which starts a runnable C in a new thread. I have a TextView in activity A, which I want to access in thread C.

我试图使TextView的公共静态字段,但会生成以下错误:

I've tried making the TextView a public static field, but that generates the following error:

07-21 07:26:25.723: ERROR/AndroidRuntime(1975): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.view.ViewRoot.checkThread(ViewRoot.java:2440)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.view.ViewRoot.invalidateChild(ViewRoot.java:522)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:540)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.view.ViewGroup.invalidateChild(ViewGroup.java:2332)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.view.View.invalidate(View.java:4437)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.widget.TextView.updateAfterEdit(TextView.java:4593)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.widget.TextView.handleTextChanged(TextView.java:5932)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6081)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.text.SpannableStringBuilder.append(SpannableStringBuilder.java:259)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.text.SpannableStringBuilder.append(SpannableStringBuilder.java:28)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.widget.TextView.append(TextView.java:2191)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at android.widget.TextView.append(TextView.java:2178)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at com.android.peekaboo.DoScan$scanBody.run(DoScan.java:36)
07-21 07:26:25.723: ERROR/AndroidRuntime(1975):     at java.lang.Thread.run(Thread.java:1058)

我也考虑过试图通过一个意图进行查看,但不知道如何将工作。我需要做什么,使这项工作?

I have also considered trying to pass the View through an intent, but do not know how that would work. What do I need to make this work?

推荐答案

您必须从GUI线程更新部件,又名创建视图层次线程。该标准的方式来做到这一点是通过 处理程序 S与如何使用处理程序的例子可以在的 ProgressDialog例(扩大'示例ProgressDialog与第二线)。

You have to update widgets from the GUI thread, aka 'the thread that created the view hierarchy'. The standard way to do this is via Handlers and an example of how to use handlers can be found in the ProgressDialog Example (expand 'Example ProgressDialog with a second thread').

阅读全文

相关推荐

最新文章