2013-10-14 12 views
21

Ich habe einige Code, der mit dem Android Facebook SDK, asynchron interagiert. Leider bedeutet das, wenn es zurückkommt, ist es in einem Hintergrundthread.Run Callback auf Haupt Thread

Cocos-2DX zieht mich mit ihm in dem Hauptthread zu kommunizieren, vor allem, wenn Dinge wie zu sagen, den Direktor zu tun Szenen zu wechseln (wie Open GL beinhaltet)

Gibt es eine Möglichkeit, einige Codes zu bekommen zu laufen auf dem Hauptfaden?

Antwort

46

Solange Sie einen Kontext haben, können Sie etwas tun können:

Handler mainHandler = new Handler(context.getMainLooper()); 

und Code auf UI-Thread ausgeführt wird:

mainHandler.post(new Runnable() { 

    @Override 
    public void run() { 
     // run code 
    } 
}); 

Wie kaka vorgeschlagen:

Sie könnten auch die statische Looper.getMainLooper() welche

01 verwenden

Gibt den Haupt-Looper der Anwendung zurück, der im Hauptthread der Anwendung liegt.

+7

Sie auch die statische [Looper.getMainLooper()] (http://developer.android.com/reference/android/os/Looper nutzen könnten. html # getMainLooper()) which _ "Gibt den Haupt-Looper der Anwendung zurück, der im Hauptthread der Anwendung lebt." _. – kaka

+0

@ kaka Cool, wusste nicht, dass es jetzt auf die Antwort hinzugefügt wurde :) – cYrixmorten

+0

Beitrag existiert nicht mehr. –

9
runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     //execute code on main thread 
    } 
}); 
+2

Auch True, aber runOnUiThread ist nur innerhalb Activity und Fragment-Klassen verfügbar – cYrixmorten

4

In C++:

Director::getInstance()->getScheduler()->performFunctionInCocosThread([]{ 
    // execute code on main thread 
}); 
Verwandte Themen