作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 java 插件,用于我开发的简单 java 应用程序。此插件启动一个也使用网络的新线程。
执行的类正在实现 Runnable 并以这种方式启动线程:
AsyncTask.execute(this);
这适用于 java 应用程序并且运行没有任何问题,但是,当我尝试使用 Unity3D 运行这个插件时,它会抛出一个错误并且不会运行我的插件
在Unity3D中执行的代码:
var token="AbCd123456789";
var jo = new AndroidJavaObject("com.edealya.lib.AppayableUnityAdapter");
jo.Call("runApplayble",token);
runAppayable 方法是:
public void runAppayable(String token){
DeviceIdentifier edDevice = new DeviceIdentifier(
this.getApplicationContext(),token);
edDevice.update();
和 edDevice.update();是启动新线程的方法。
I/Unity (27624): Exception: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
I/Unity (27624): at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <filename unknown>:0
I/Unity (27624): at UnityEngine.AndroidJNISafe.NewObject (IntPtr clazz, IntPtr methodID, UnityEngine.jvalue[] args) [0x00000] in <filename unknown>:0
I/Unity (27624): at UnityEngine.AndroidJavaObject._AndroidJavaObject (System.String className, System.Object[] args) [0x00000] in <filename unknown>:0
I/Unity (27624): at UnityEngine.AndroidJavaObject..ctor (System.String className, System.Object[] args) [0x00000] in <filename unknown>:0
I/Unity (27624): at ReflectionFx.startAppayable () [0x00006] in /Users/Shared/Unity/4-0_AngryBots/Assets/Scripts/Fx/ReflectionFx.cs:30
I/Unity (27624): at ReflectionFx.Start () [0x00000] in /Users/Shared/Unity/4-0_AngryBots/Assets/Scripts/Fx/ReflectionFx.cs:38
我该如何解决这个问题?
最佳答案
AsyncTask 必须在 UiThread 或有 Looper 的线程上启动,尝试用
myActivity.runOnUiThread(new Runnable(){AsyncTask.execute(this);})
或者在启动线程之前调用 Looper.prepare()
关于Unity3D上的Java插件无法启动新线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19511379/
嘿。本周的一个教程,其中一个问题要求通过使用其他函数 formatLine 和 formatList 创建一个函数 formatLines,以格式化行列表。 我的代码是这样的; type Line =
我是一名优秀的程序员,十分优秀!