में बताया गया है प्रलेखन
http://developer.android.com/reference/android/os/Handler.html
"प्रत्येक हैंडलर उदाहरण एक धागे और उस थ्रेड के संदेश कतार से जुड़ा हुआ है। "
जब आप अपनी गतिविधि समाप्त करने वाले हैं, उदा। onDestroy()
में आप भी runnable इसके लिए शुरू किया गया था के लिए कॉलबैक रद्द करने की आवश्यकता:
mHandler.removeCallbacks(previouslyStartedRunnable);
आप क्या कर सकते हैं कि यहां तक कि पता चल सके कि runnable पहले से ही निकाल दिया गया था, जबकि अपनी गतिविधि सक्रिय था बिना।
अद्यतन:
वहाँ दो अतिरिक्त मामलों विचार किया जाना है:
1.) आप एक तरीका है कि आप Runnable, उदा नया वर्ग बनाया में अपने हैंडलर को लागू किया है
private class HandleUpdateInd implements Runnable...
आमतौर पर आपको बस इतना करना है कि मानकों के वर्तमान सेट (जो runnable आग जब तक बदल सकते हैं) के साथ runnable देरी शुरू करने के लिए यदि आप है की जरूरत है। इसे रद्द करने के लिए आप
mHandler.removeCallbacksAndMessages(HandleUpdateInd.class);
2. उपयोग करने के लिए) आप इनलाइन कॉल (टिप्पणी के लिए धन्यवाद JPM)
handler = new Handler() { public void handleMessage(Message msg) { ... } };
तो फिर तुम परिभाषित करने के लिए "क्या" है कि संदेश के लिए मूल्य की जरूरत उपयोग कर रहे हैं की जरूरत है। बाद में, यदि आपको इसे रद्द करने की आवश्यकता है तो आप उस कार्य को करने के लिए
handler.removeMessages(what);
का उपयोग कर सकते हैं।
यदि आप कोड पोस्ट करते हैं तो बेहतर होगा अगर आपने हैंडलर का ब्योरा दिया हो तो बेहतर होगा। इसके अलावा, क्या आप हैंडलर को एक अलग थ्रेड पर तुरंत चालू करते हैं? – basilisk