Java-只有创建视图层次结构的原始线程才能接触其视图异常?
我得到了上面的错误,不知道为什么。我正在开发一个摄像头应用程序,现在出现了一个错误。可能是Java-只有创建视图层次结构的原始线程才能接触其视图异常?,java,android,thread-exceptions,Java,Android,Thread Exceptions,我得到了上面的错误,不知道为什么。我正在开发一个摄像头应用程序,现在出现了一个错误。可能是textureView导致了错误。这是个例外: example.com.view.CameraActivity : Only the original thread that created a view hierarchy can touch its views. java.lang.RuntimeException at android.view.ViewRootImpl.checkThread(V
textureView
导致了错误。这是个例外:
example.com.view.CameraActivity : Only the original thread that created a view hierarchy can touch its views.
java.lang.RuntimeException
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7101)
at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:1137)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:5254)
at android.view.View.invalidateInternal(View.java:13669)
at android.view.View.invalidate(View.java:13633)
at android.view.View.invalidateParentIfNeeded(View.java:13822)
at android.view.TextureView.setTransform(TextureView.java:483)
at example.com.data.BasicFragment.configureTransform(BasicFragment.java:850)
at example.com.data.BasicFragment.access$100(BasicFragment.java:69)
at example.com.data.BasicFragment$2.onOpened(BasicFragment.java:182)
at android.hardware.camera2.impl.CameraDeviceImpl$1.run(CameraDeviceImpl.java:134)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:173)
at android.os.HandlerThread.run(HandlerThread.java:61)
03-20 20:07:18.531 25889-26077/example.com.kamera E/AndroidRuntime: FATAL EXCEPTION: CameraBackground
Process: example.com.kamera, PID: 25889
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7103)
at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:1137)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:5254)
at android.view.View.invalidateInternal(View.java:13669)
at android.view.View.invalidate(View.java:13633)
at android.view.View.invalidateParentIfNeeded(View.java:13822)
at android.view.TextureView.setTransform(TextureView.java:483)
at example.com.data.BasicFragment.configureTransform(BasicFragment.java:850)
at example.com.data.BasicFragment.access$100(BasicFragment.java:69)
at example.com.data.BasicFragment$2.onOpened(BasicFragment.java:182)
at android.hardware.camera2.impl.CameraDeviceImpl$1.run(CameraDeviceImpl.java:134)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:173)
at android.os.HandlerThread.run(HandlerThread.java:61)
你知道是什么导致了这个错误吗?行
850
如下:mTextureView.setTransform(矩阵)代码>。为什么这里会出现错误?我不是Android开发者,但您遇到的问题与Swing UI的问题类似-在这里,您也不能直接从另一个线程修改某些UI组件。必须从另一个线程使用invokeLater()来执行此操作,这样Swing dispatcher线程将自己执行所需的任务。原因是,如果两个线程同时写入相同的变量,则可能会发生一些难以跟踪的并发错误。
因此,您遇到的问题与异常情况完全一样:“只有创建视图层次结构的原始线程才能接触其视图”。尝试在您使用的视图技术中找到类似于invokeLater()的机制。如果没有任何代码,我们可以重复错误消息所说的内容:您试图从与创建视图的线程不同的线程中修改视图。