假设您有一个 Unity Java 插件,您可以像这样调用 Java 插件
private static readonly AndroidJavaClass m_somePlugin = new AndroidJavaClass("com.unity3d.Plugin.blah.SomePlugin");
using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (var currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
{
m_somePlugin.CallStatic("onInitialise", currentActivity);
}
}
插件看起来像这样
public class SomePlugin
{
static public void onInitialise(final Activity currentActivity)
{
Handler someHandler = new Handler();
}
}
一切都很简单。除了它会崩溃。创建处理程序是原因。我猜这是一个线程问题。
所以问题是,如何在我传入的 Activity 中的 Java 插件中创建处理程序?有人知道吗?
最佳答案
是的,问题的解决方案是使用 runOnUiThread。所以为了让上面的代码不崩溃,SomePlugin 应该看起来像这样
public class SomePlugin
{
static public void onInitialise(final Activity currentActivity)
{
currentActivity.runOnUiThread(new Runnable() {
Handler someHandler = new Handler(); });
}
}
关于java - 如何在从 Unity 调用的 Java 插件中创建 Android 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13346657/