- 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