2011-01-05 7 views
15

मैं प्रोग्रामिंग एंड्रॉइड के लिए नया हूं लेकिन मेरे पास प्रोग्रामिंग ब्लैकबेरी का अनुभव है।अमान्य() एक थ्रेड एंड्रॉइड ऐप के अंदर

मैंने एक ऐप बनाया जिसमें एक गतिविधि वर्ग (main.java) और एक व्यू क्लास (game.java) है।

दृश्य कक्षा के अंदर मेरे पास स्क्रीन पर कुछ बिटमैप खींचे जा रहे हैं। मैंने एक थ्रेड बनाया और मैं थ्रेड में छवियों को चारों ओर ले जा रहा हूं। हालांकि जब मैं थ्रेड के अंदर अमान्य() को कॉल करता हूं तो यह कभी भी स्क्रीन को दोबारा नहीं देता है।

क्या आप थ्रेड से स्क्रीन को अमान्य करने में सक्षम नहीं हैं? मुझे पता है कि धागा चल रहा है और अमान्य को बुलाया जा रहा है, यह स्क्रीन पर कभी भी बदलाव नहीं करता है।

उत्तर

26

यदि आप इसे गैर-यूआई थ्रेड से कॉल करते हैं तो आपको View.postInvalidate() का उपयोग करना होगा। डॉक्स के अनुसार:

सार्वजनिक शून्य postInvalidate() के बाद से: एपीआई स्तर 1

कारण एक अमान्य घटना पाश के माध्यम से बाद में एक चक्र पर होने। गैर-यूआई थ्रेड से दृश्य को अमान्य करने के लिए इसका उपयोग करें।

+0

वाह जो बहुत आसान था ... मैं इसे करने के लिए पिछले 30 मिनट की तलाश कर रहा हूं और मैं कभी भी पोस्टइवालिडेट() में कभी नहीं आया था। – Dave

+1

हाँ, कुछ कार्यों में जब आप उन्हें खोजते हैं तो दस्तावेज़ों से असहमति की बुरी आदत होती है;) – maid450

संबंधित मुद्दे