2013-10-14 15 views
21

मेरे पास कुछ कोड है जो एंड्रॉइड फेसबुक एसडीके, असीमित रूप से इंटरैक्ट करता है। दुर्भाग्य से इसका मतलब यह है कि जब यह लौटाता है तो यह पृष्ठभूमि धागे में होता है।मुख्य थ्रेड पर कॉलबैक चलाएं

कोकोस-2DX मुझे मुख्य थ्रेड में यह के साथ बातचीत करना पसंद करते हैं, खासकर जब दृश्यों स्विच करने के लिए (के रूप में यह खुली GL शामिल है)

वहाँ है किसी भी तरह से निदेशक कह की तरह काम करने को चलाने के लिए कुछ कोड प्राप्त करने के मुख्य धागे पर?

उत्तर

46

जब तक आप एक संदर्भ है, तो आप कुछ इस तरह कर सकते हैं:

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

और यूआई धागे पर कोड को चलाने के लिए:

: kaka द्वारा सुझाव दिया गया है

mainHandler.post(new Runnable() { 

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

आप स्थिर Looper.getMainLooper() का भी उपयोग कर सकते हैं जो

एप्लिकेशन के मुख्य लूप को वापस करता है, जो एप्लिकेशन के मुख्य थ्रेड में रहता है।

+7

आप स्थिर इस्तेमाल कर सकते हैं [Looper.getMainLooper()] (http://developer.android.com/reference/android/os/Looper। एचटीएमएल # getMainLooper()) जो _ "एप्लिकेशन के मुख्य लूप को वापस करता है, जो एप्लिकेशन के मुख्य थ्रेड में रहता है।" _। – kaka

+0

@ कका कूल, यह नहीं पता था, अब इसे उत्तर में जोड़ा गया है :) – cYrixmorten

+0

पोस्ट अब मौजूद नहीं है। –

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

में मुख्य धागे पर कूदने की बजाय मुख्य थ्रेड पर जावा कोड रिटर्न कंट्रोल को मुख्य थ्रेड पर रखना आसान हो सकता है लेकिन रनऑनयू थ्रेड केवल गतिविधि और फ्रैगमेंट कक्षाओं के भीतर उपलब्ध है – cYrixmorten

4

C++ में:

Director::getInstance()->getScheduler()->performFunctionInCocosThread([]{ 
    // execute code on main thread 
}); 
संबंधित मुद्दे