因此,假设您有一个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();
    }
}


一切都非常简单。除非它会崩溃。原因是创建处理程序。我猜这是一个线程问题。

所以问题是,在我传递的活动中,如何在Java插件中创建处理程序?有人知道吗

最佳答案

是的,解决该问题的方法是使用runOnUiThread。因此,为了使上面的代码不崩溃,SomePlugin应该看起来像这样

public class SomePlugin
{
    static public void onInitialise(final Activity currentActivity)
    {
        currentActivity.runOnUiThread(new Runnable() {
            Handler someHandler = new Handler(); });
    }
}

08-05 18:43