Ejecutar Callback En El Hilo Principal


Tengo un código que interactúa con el SDK de Android Facebook, de forma asíncrona. Desafortunadamente, esto significa que cuando devuelve está en un hilo de fondo.

Cocos-2dx prefiere que interactúe con él en el Hilo Principal, especialmente cuando hace cosas como decirle al Director que cambie de escena (Ya que implica Open GL)

¿Hay alguna manera de obtener algún código para ejecutarse en el hilo principal ?

Author: James Campbell, 2013-10-14

3 answers

Mientras tengas un Contexto, puedes hacer algo como esto:

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

Y para ejecutar código en el subproceso de interfaz de usuario:

mainHandler.post(new Runnable() {

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

Como sugiere kaka :

También puedes usar el Looper estático .getMainLooper () que

Devuelve el looper principal de la aplicación, que vive en el hilo principal de la aplicación.

 48
Author: cYrixmorten,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:45
runOnUiThread(new Runnable() {
    @Override
    public void run() {
        //execute code on main thread
    }
});
 9
Author: Lefteris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-14 18:47:50

En C++:

Director::getInstance()->getScheduler()->performFunctionInCocosThread([]{
    // execute code on main thread
});
 4
Author: dimon4eg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-31 09:22:25