如何在从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(); }); } }