2012-11-12 5 views
1

그래서에서 호출 자바 플러그인 안드로이드 처리기를 만드는 방법의 당신이 유니티 자바 플러그인이 있다고 가정 해 보자, 그렇게유니티

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(); 
    } 
} 

모두 매우 간단합니다. 그것을 제외하고 충돌합니다. 처리기를 만드는 것이 원인입니다. 나는 ' m이 그것을 짐작할 때 ' 스레드 문제입니다.

그렇다면 내가 통과하는 활동에서 자바 플러그인에서 처리기를 만드는 방법은 무엇입니까? 누구 알아?

+0

은 currentActivity.runOnUiThread와 같이 보입니다. 나는 그것을 시도하고 성공한다면 여기에보고 할 것이다. – Haze

답변

1

예, 문제의 해결책은 runOnUiThread를 사용하는 것이 었습니다. 그래서 위의 코드가 충돌하지 않게하려면 SomePlugin은 다음과 같이 표시되어야합니다.

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