我正在为Unity3D游戏创建一个简单的Android插件,以显示消息和原生弹窗。当我想要从Java类中调用方法时,我使用AndroidJavaClass和AndroidJavaObject,就像在Unity文档中一样:
AndroidJavaObject bridge = new AndroidJavaObject(CLASS_NAME);
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject act = jc.GetStatic<AndroidJavaObject>("currentActivity");
act.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
bridge.CallStatic(methodName, args);
}));
单位文档推荐使用“using”语句,如https://docs.unity3d.com/Manual/AndroidJARPlugins.html中所述的最佳实践:在Unity中使用Java插件。请注意保留HTML标记。
using (AndroidJavaClass cls = new AndroidJavaClass("java.util.Locale")) {
using(AndroidJavaObject locale = cls.CallStatic<AndroidJavaObject>("getDefault")) {
Debug.Log("current lang = " + locale.Call<string>("getDisplayLanguage"));
}
}
但是,这种方法在计算方面是“计算机密集型”的。
问题:我是否应该缓存AndroidJavaClass和AndroidJavaObject的实例?
感谢您的回答。