如何在从Unity调用的Java插件中创建Android Handler

所以,假设您有一个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("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(); }); } }