1

たとえば、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();
    }
}

すべて非常に単純です。クラッシュすることを除いて。Handler の作成が原因です。スレッドの問題だと思います。

問題は、私が渡しているアクティビティで、Java プラグインでハンドラーを作成するにはどうすればよいかということです。誰でも知っていますか?

4

1 に答える 1

1

はい、問題の解決策はrunOnUiThreadを使用することでした。したがって、上記のコードをクラッシュさせないようにするには、SomePluginは次のようになります。

public class SomePlugin 
{
    static public void onInitialise(final Activity currentActivity) 
    {
        currentActivity.runOnUiThread(new Runnable() {
            Handler someHandler = new Handler(); });
    }
}
于 2012-11-12T16:24:46.610 に答える