如何在名为from Unity的Java插件中创建Android处理程序

如何在名为from Unity的Java插件中创建Android处理程序,java,android,plugins,handler,unity3d,Java,Android,Plugins,Handler,Unity3d,假设您有一个UnityJava插件,您可以像这样调用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 cu

假设您有一个UnityJava插件,您可以像这样调用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);
    }
}
一切都很简单。除非它会崩溃。创建处理程序是原因。我猜这是一个线程问题


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

是的,解决问题的方法是使用runOnUiThread。所以为了让上面的代码不崩溃,一些插件应该是这样的

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

是的,问题的解决方案是使用runOnUiThread。所以为了让上面的代码不崩溃,一些插件应该是这样的

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

看起来currentActivity.runOnUiThread可能是一个不错的选择。如果成功的话,我会尝试一下并在这里报告。看起来currentActivity.runOnUiThread可能是一个不错的选择。如果成功的话,我会尝试一下并在这里报告。