2012-07-10 14 views
9

में हैंडलर में निकालें कॉलबैक (रननेबल आर) का अर्थ क्या है, मैं जानना चाहता हूं कि हैंडलर में निकालें कैलकबैक (रननेबल आर) का सटीक अर्थ क्या है। मैं अपने documentation के माध्यम से चला गया और यह बस कहता है "संदेश कतार में चलने योग्य रन के किसी भी लंबित पद को हटाएं"।एंड्रॉइड

अब मेरा सवाल यह है कि अगर मेरा संदेश पहले से ही मेरे हैंडलर द्वारा प्रसंस्करण शुरू कर दिया गया है और यदि मैं removeCallbacks पर कॉल करता हूं, तो क्या यह मेरे आधा पूरा संदेश संसाधित करना बंद कर देगा? या यहां तक ​​कि अगर मैं removeCallbacks पर कॉल करता हूं तो संदेश जो मेरे हैंडलर द्वारा प्रसंस्करण शुरू कर चुका है (जब मैं post(Runnable r) पर कॉल करता हूं) निष्पादित किया जाएगा?

उत्तर

8

रननेबल केवल संदेश कतार से बाहर निकलने के बाद ही निष्पादित किए जाने चाहिए, इसलिए यदि आपका संदेश पहले से ही प्रसंस्करण शुरू कर चुका है तो इसे removeCallbacks पर कॉल करके प्रभावित नहीं किया जाना चाहिए। इसे पहले ही हटा दिया जाना चाहिए था, इसलिए यह प्रसंस्करण जारी रहेगा।

+0

ठीक है ... धन्यवाद दोस्त .. !!! – AndroDev

+0

हाय बिल ... एक और बात..यदि मैं async कार्य का उपयोग करता हूं और जब PostExecute पर चल रहा हूं और फिर मैं asynctask.cancel (true) को कॉल करता हूं, उस स्थिति में, POSTExecute भी रद्द कर दिया जाएगा? – AndroDev

+0

@AndroDev मुझे नहीं पता। इसे एक अलग प्रश्न के रूप में पोस्ट किया जाना चाहिए। –

10

जब आप कोई नया Handler बनाते हैं, तो यह थ्रेड के थ्रेड/संदेश कतार से बना होता है जो इसे बना रहा है। उस बिंदु से, यह उस संदेश कतार में संदेश और रननेबल वितरित करेगा और उन्हें संदेश कतार से बाहर आने के बाद निष्पादित करेगा। removeCallbacks बस उन रननेबल को हटा देता है जिन्होंने अभी तक कतार से प्रसंस्करण शुरू नहीं किया है।

+0

धन्यवाद एलेक्स। – AndroDev