2013-10-14 19 views
21

AndroidのFacebook SDKと非同期でやりとりするコードがあります。残念ながら、これはバックグラウンドスレッドに戻るときにこれを意味します。メインスレッドでコールバックを実行

ココス-2dxは(それがオープンGLを伴うとして)シーンを切り替えることがディレクターを伝えるようなものをやって場合は特に、メインスレッドでそれと対話するために私を好む

実行するためのいくつかのコードを取得する方法はありますメインスレッド?

答えて

46

限り、あなたはコンテキストを持っているとして、あなたはこのような何か行うことができます。

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

をし、UIスレッド上でコードを実行する:

mainHandler.post(new Runnable() { 

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

kakaによって示唆されるように:

また、静的なものを使用することもできます

アプリケーションのメインスレッドにあるアプリケーションのメインルーパを返します。 C++で

+7

またhttp://developer.android.com/reference/android/os/Looper([)(Looper.getMainLooper]静的を使用することができます。 html#getMainLooper())which _ _ "アプリケーションのメインスレッドにあるメインルーパーを返します。" – kaka

+0

@kakaクール、それは知らなかった、それは今答えに追加されました:) – cYrixmorten

+0

投稿はもう存在しません。 –

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

また、trueですが、runOnUiThreadはActivityクラスとFragmentクラスでのみ使用できます – cYrixmorten

4

Director::getInstance()->getScheduler()->performFunctionInCocosThread([]{ 
    // execute code on main thread 
}); 
関連する問題