- Home /
Unity + Android + Development Build = CompareBaseObjectsInternal can only be called from the main thread.
Hi there,
I have been struggling to achieve an android plugin to communicate with a Singleton, and it seems I've achieved it by forcing the call through the UIThread.
Instance.activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>{
Instance.activity.Call("getMe");
}));
The problem comes when I try to launch the app as a development build (it works as a charm launching it normally). The error I get is this one:
05-13 16:45:45.070: E/Unity(1585): CompareBaseObjectsInternal can only be called from the main thread.
05-13 16:45:45.070: E/Unity(1585): Constructors and field initializers will be executed from the loading thread when loading a scene.
05-13 16:45:45.070: E/Unity(1585): Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.
05-13 16:45:45.070: E/Unity(1585):
05-13 16:45:45.070: E/Unity(1585): (Filename: /Applications/buildAgent/work/7535de4ca26c26ac/Runtime/ExportGenerated/AndroidManaged/UnityEngineObject.cpp Line: 24)
05-13 16:45:45.180: I/ActivityManager(2294): Process android.process.media (pid 1837) (adj 9) has died.
05-13 16:45:45.210: E/mono(1585): Unhandled Exception: System.ArgumentException: CompareBaseObjectsInternal can only be called from the main thread.
05-13 16:45:45.210: E/mono(1585): Constructors and field initializers will be executed from the loading thread when loading a scene.
05-13 16:45:45.210: E/mono(1585): Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.
05-13 16:45:45.210: E/mono(1585): at UnityEngine.Object.CompareBaseObjects (UnityEngine.Object lhs, UnityEngine.Object rhs) [0x00000] in <filename unknown>:0
05-13 16:45:45.210: E/mono(1585): at UnityEngine.Object.op_Equality (UnityEngine.Object x, UnityEngine.Object y) [0x00000] in <filename unknown>:0
05-13 16:45:45.210: E/mono(1585): at Singleton`1[FacebookWrapper].get_Instance () [0x00000] in J:\PROYECTOS\TapToCare\trunk\Assets\Scripts\Singleton.cs:15
05-13 16:45:45.210: E/mono(1585): at FacebookWrapper.<getMe>m__1 () [0x00000] in J:\PROYECTOS\TapToCare\trunk\Assets\Scripts\FacebookWrapper.cs:55
Any clue? Thanks!
Comment
Answer by oakshiro · May 13, 2013 at 03:00 PM
I just figured it out!! I had to call
Instance.activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>{
instance.activity.Call("getMe");
}));
note the lowercase "i" on instance call.
Your answer
Follow this Question
Related Questions
A node in a childnode? 1 Answer
Unity games and web comunication 1 Answer
Camera 2D Movement android unity 1 Answer
I am looking for a blow detection logic that is accurate. please help me. 0 Answers