java - 如何在从 Unity 调用的 Java 插件中创建 Android 处理程序

标签 java android plugins handler unity-game-engine

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

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

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

最佳答案

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

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

关于java - 如何在从 Unity 调用的 Java 插件中创建 Android 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13346657/

相关文章:

java - 在tomcat上部署war文件时出错

java - 不幸的是,<project name> 已停止

java - 寻找 "Universal"文档查看器组件/库

php - 带有条件标签的 WordPress init remove_action

java - 如何将字符串格式的字节数组转换为字节数组?

java - Spring JDBC - 批量删除和插入

android - buildSrc 中自定义 gradle 插件中的类不会打包到 apk 中

android - 为本地镜像创建适用于 Android 的照片库应用程序

java - 安卓 : How to save data (Intent's Data)

performance - VS 性能不佳 - IsAssertEtwEnabled 上的高 CPU