【问题标题】:How to create Android Handler in a Java plugin called from Unity如何在从 Unity 调用的 Java 插件中创建 Android 处理程序
【发布时间】:2012-11-12 15:36:24
【问题描述】:

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

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

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

【问题讨论】:

  • 看起来 currentActivity.runOnUiThread 可能是要走的路。如果成功我会尝试并在这里报告。

标签: java android plugins handler unity3d


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 2015-01-17
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多