- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们从 Crashlytics 收到错误报告,影响了相当一部分用户(大约 10%)。这是一个 CalledFromWrongThreadException。
问题是我不知道是什么导致了这个问题,我自己也没有。这是日志:
Caused by android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7282)
at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:1197)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:5748)
at android.view.View.invalidateInternal(View.java:15082)
at android.view.View.invalidate(View.java:15046)
at android.view.View.invalidate(View.java:15029)
at android.view.SurfaceView$1.handleMessage(SurfaceView.java:142)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at com.unity3d.player.UnityPlayer$c.run(Unknown Source:20)
com.unity3d.player.UnityPlayer$c.run(Unknown Source:20)
在这里并不是很有帮助,因为来源未知,我想它可能来自第三方库(GVR SDK、Fabric ...)。
最佳答案
我没有关于你项目的所有细节,内部无法重现的错误是最糟糕的。尽管如此,我还是会尝试给出一些关于正在发生的事情的提示。也许这些提示可以说明一些问题并帮助您找出错误的根本原因:
CalledFromWrongThreadException
在 Android 上, View 只能从创建它的线程访问。这实际上也适用于其他环境( WinForms 、 WPF 等)。此异常意味着某些东西正试图从错误的线程访问某些 UI 元素 (SurfaceView)。
com.unity3d.player.UnityPlayer$c.run
堆栈跟踪源自一些自定义 Unity 管道代码。虽然这并没有给出这个调用来自哪里(在你的 C# 代码中)的线索,但它可能意味着代码来自 C#(使用 AndroidJavaObject 或 AndroidJavaClass 调用)。 Unity 的脚本线程与 Android 的主线程不同,因此这与您获得的异常类型一起使用是有意义的。
作为测试,我使用此代码来模拟相同的异常:
using (var actClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
var activity = actClass.GetStatic<AndroidJavaObject>("currentActivity");
// cause an exception to be thrown
activity.Call("setContentView", 15);
}
E/ViewRootImpl(19244): com.test.crash.GameActivity : Only the original thread that created a view hierarchy can touch its views. E/ViewRootImpl(19244): java.lang.RuntimeException E/ViewRootImpl(19244): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7105) E/ViewRootImpl(19244): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:1139) E/ViewRootImpl(19244): at android.view.ViewGroup.invalidateChild(ViewGroup.java:5254) E/ViewRootImpl(19244): at android.view.View.invalidateInternal(View.java:13669) E/ViewRootImpl(19244): at android.view.View.invalidate(View.java:13633) E/ViewRootImpl(19244): at android.view.View.onFocusChanged(View.java:6204) E/ViewRootImpl(19244): at android.view.View.clearFocusInternal(View.java:6089) E/ViewRootImpl(19244): at android.view.View.unFocus(View.java:6122) E/ViewRootImpl(19244): at android.view.ViewGroup.unFocus(ViewGroup.java:997) E/ViewRootImpl(19244): at android.view.ViewGroup.removeAllViewsInLayout(ViewGroup.java:4946) E/ViewRootImpl(19244): at android.view.ViewGroup.removeAllViews(ViewGroup.java:4905) E/ViewRootImpl(19244): at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:410) E/ViewRootImpl(19244): at android.app.Activity.setContentView(Activity.java:2423) E/ViewRootImpl(19244): at com.unity3d.player.UnityPlayer.nativeRender(Native Method) E/ViewRootImpl(19244): at com.unity3d.player.UnityPlayer.a(Unknown Source) E/ViewRootImpl(19244): at com.unity3d.player.UnityPlayer$c$1.handleMessage(Unknown Source) E/ViewRootImpl(19244): at android.os.Handler.dispatchMessage(Handler.java:98) E/ViewRootImpl(19244): at android.os.Looper.loop(Looper.java:173) E/ViewRootImpl(19244): at com.unity3d.player.UnityPlayer$c.run(Unknown Source)
关于unity3d - unity Daydream CalledFromWrongThreadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44260967/
我正在开发 DayDream 应用程序并使用 Pixel XL 和真正的 DayDream Controller (在 MacBook Pro 上)。我真的很希望能够在从 Unity Editor 运
daydream Controller 很棒,我们希望能够在我的 AR 应用中使用它。它通过蓝牙与 HoloLens 配对就好了,但不确定我是否可以在 Unity 中查看它。 HoloLens 和 d
我正在为 Android 制作 Daydream 应用程序,但它立即崩溃。我不知道是什么导致了这个问题。我认为它与 AndroidManifest 有关,但对我来说看起来不错。我希望有人能帮助我,因为
在我的 Galaxy Nexus 上,我可以点击系统偏好设置中的这个按钮来启动我当前选择的白日梦。 有没有办法通过 Intent 在应用程序中重现此功能?我没有白日梦服务,但我想让用户开始他们喜欢的白
我正在开发使用 DreamService 的应用程序。但内置选项只能让您在充电和对接时开始做白日梦。是否有任何解决方案可以在执行应用程序期间调用白日梦(当设备处于非 Activity 状态一段时间,比
我正在尝试创建一个 Android Daydream 应用程序。我从 https://code.google.com/p/android-daydream-samples/source/browse/
我们从 Crashlytics 收到错误报告,影响了相当一部分用户(大约 10%)。这是一个 CalledFromWrongThreadException。 问题是我不知道是什么导致了这个问题,我自己
我无法使用Unity 2018.2.17f1来构建GoogleVRForUnity.unitypackage项目。当我尝试构建时,出现错误消息: CommandInvokationFailure: G
刚开始玩 A-Frame,我可以看到 vive-controls 和 oculus-touch-controls,但看不到 google daydream。 我查看了组件存储库,但没有看到任何看起来可
我想知道我们的应用 Daydream 是否在 Android 设置中被选中。 我能发现吗? 以及如何? 最佳答案 我编写了一个实用类来获取一些 Daydream 设置: 获取是否在设置中启用了 Day
正如问题所暗示的那样,我怎样才能进行尽可能少的设置以进入 Daydream 主屏幕。 我有 26 部手机需要设置 360 度全景视频播放器,这很简单,但如果用户点击 Daydream Controll
是否可以检测 Daydream 是打开还是关闭?如果是,怎么办? 编辑:澄清一下,我希望阅读 DayDream 的系统设置(就像您可以阅读飞行模式和其他设置一样)。您可以从 Intent.ACTION
我正在将 Dreamservice 添加到我的应用程序中,我想在梦中播放视频。与我在主 Activity 期间用于隐藏导航控件的代码大致相同 // Hide navigation controls V
1.我们的项目是一个包含2D传统 Activity 和Cardboad VR模式的混合应用,现在我们想引入Daydream API来在Daydream平台上发布应用,但是在Daydream上发布的应用
我对 Daydream View 2017 中的视野有疑问。我在两个插件上测试了我的 Unity 应用程序:Cardboard 和 Daydream,Daydream 中的 FOV 似乎比 Cardb
我正在尝试将一个项目从 Google Cardboard SDK 转移到 Daydream SDK。我正在使用最新的 GVR SDK。在我的场景中, Canvas 上有几个按钮,这些按钮会在悬停时改变
如何检测设备是否在 Daydream 耳机中?特别是Unity SDK中是否暴露了这个API函数? 谢谢! 最佳答案 看起来 ( link ) 您无法检测到该设备是否在 Daydream 耳机中。截至
我得到以下异常: 02-10 15:30:03.676 12841-12841/hu.stuff.dreamE/AndroidRuntime﹕ FATAL EXCEPTION: main P
我正在开发一个应在特殊情况下显示白日梦的应用程序,我到处搜索以找到通过我的 MainActivity 类启动我的白日梦服务的正确方法,但没有成功, 目前我正在使用以下代码来启动白日梦并且实际上它有效,
我正在尝试在我的 Unity VR 应用程序中使用 LookToWalk 脚本,该脚本应该在我的 Daydream View 上运行。在“游戏”模式下预览更改,一切都按预期工作(我将脚本配置为在用户相
我是一名优秀的程序员,十分优秀!