Как создать Android-обработчик в плагине Java под названием Unity

Итак, скажем, у вас есть плагин для 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, в действии, которое я передаю? Кто-нибудь знает?

1 ответ

Решение

Да, решением проблемы было использование runOnUiThread. Так что для того, чтобы код выше не зависал, SomePlugin должен выглядеть так

public class SomePlugin 
{
    static public void onInitialise(final Activity currentActivity) 
    {
        currentActivity.runOnUiThread(new Runnable() {
            Handler someHandler = new Handler(); });
    }
}
Другие вопросы по тегам