【发布时间】:2016-03-12 15:10:07
【问题描述】:
我正在开发一个简单的自定义视图来显示一个由背景图像组成的仪表,我在上面打印一个数字 (rpm) 并绘制一个指针。
为了实现它,我定义了一个扩展 ImageView 类的类(MyGauge)。在 onDraw() 成员中,我 drawLine() 和 drawText() 由活动发送并由 SetRpm() 成员收集的数字;然后我强制调用 invalidate()。
Activity 运行一个 Thread(一个 Runnable 实例),每秒生成一个不同的数字;线程向活动分派消息; Handler接收消息并通过SetRpm()函数设置数字。
我收到的错误是:
03-12 09:39:33.280 1796-1827/com.stemmo.termi_up W/dalvikvm: threadid=16: thread exiting with uncaught exception (group=0xb178e678)
03-12 09:39:33.280 1796-1827/com.stemmo.termi_up E/AndroidRuntime: FATAL EXCEPTION: Thread-78
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:5908)
at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:869)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:4253)
at android.view.View.invalidate(View.java:10539)
at android.view.View.invalidate(View.java:10494)
at com.stemmo.termi_up.CustomViews.MyGauge.SetRpm(MyGauge.java:61)
at com.stemmo.termi_up.GaugeActivity$2.handleMessage(GaugeActivity.java:54)
at android.os.Handler.dispatchMessage(Handler.java:99)
at com.stemmo.termi_up.GaugeActivity$3.run(GaugeActivity.java:83)
at java.lang.Thread.run(Thread.java:841)
那么,处理程序是在线程的上下文中吗??
我该如何解决?
我需要 AsyncTask 对象而不是 Runnable 对象吗?
【问题讨论】:
-
您能把您的代码放在这里检查您的代码问题吗?
-
见下面的代码
标签: java android multithreading android-custom-view