एंड्रॉइड के invalidate()
और postInvalidate()
विधियों के बीच क्या अंतर है? प्रत्येक को कब बुलाया जाता है? क्या विधियों को केवल कक्षाओं में बुलाया जाना चाहिए जो View
का विस्तार करते हैं?एंड्रॉइड की अमान्य() और postInvalidate() विधियों के बीच क्या अंतर है?
उत्तर
यदि आप UI Thread
से अपना विचार आकर्षित करना चाहते हैं तो आप invalidate()
विधि पर कॉल कर सकते हैं।
यदि आप Non UI Thread
से अपना विचार आकर्षित करना चाहते हैं तो आप postInvalidate()
विधि पर कॉल कर सकते हैं।
व्यू क्लास से प्राप्त प्रत्येक वर्ग को अमान्य और पोस्टइवालिडेट विधि है। अगर अमान्य हो जाता है तो यह सिस्टम को बताता है कि वर्तमान दृश्य बदल गया है और इसे जितनी जल्दी हो सके इसे फिर से खींचा जाना चाहिए। चूंकि इस विधि को केवल आपके यूआईटीएचड से ही बुलाया जा सकता है जब आप यूआईटीएचड में नहीं हैं और फिर भी सिस्टम को सूचित करना चाहते हैं कि आपका व्यू बदल गया है। PostInvalidate विधि सिस्टम को गैर-यूआईटीएचड से सूचित करती है और जल्द से जल्द UIThread पर अगले ईवेंट में दृश्य को फिर से खींचा जाता है। यह भी शीघ्र ही SDK दस्तावेज़ में समझाया गया है:
अद्यतन:
वहाँ कुछ समस्या पैदा जब अन्य धागे से postInvalidate का उपयोग कर (जैसे नहीं होने UI को अपडेट राइट दूर), इस कर रहे हैं और अधिक कुशल हो जाएगा:
runOnUiThread(new Runnable() {
public void run() {
myImageView.setImageBitmap(image);
imageView.invalidate();
}
});
- 1. PostInvalidate() क्या करता है?
- 2. अमान्य सूची और अमान्य DisplayList के बीच क्या अंतर है?
- 3. os.popen() विधियों के बीच क्या अंतर है?
- 4. Html.Partial और Html.Action विधियों के बीच क्या अंतर है?
- 5. EventLog.WriteEntry और EventLog.WriteEvent विधियों के बीच अंतर
- 6. एंड्रॉइड के बीच क्या अंतर है: लेआउट_विड्थ और एंड्रॉइड: चौड़ाई
- 7. `ToXXXX` और` AsXXXX` रूपांतरण विधियों के बीच अंतर क्या हैं?
- 8. KineticJS ड्रा विधियों के बीच क्या अंतर है?
- 9. 5 जादुई रिकॉर्ड सेटअप विधियों के बीच क्या अंतर है?
- 10. एंड्रॉइड द्वारा प्रदान की गई केई(), ऑनकेडाउन() और प्रेषणकेएवेंट() विधियों के बीच अंतर?
- 11. एंड्रॉइड पर GetDir और getFilesDir के बीच क्या अंतर है?
- 12. एंड्रॉइड कन्स्ट्रक्टर और ऑनक्रेट() के बीच क्या अंतर है?
- 13. एंड्रॉइड में SendStickyBroadcast और sendBroadcast के बीच क्या अंतर है
- 14. एंड्रॉइड में बिटमैप और ड्रायबल के बीच क्या अंतर है?
- 15. पायथन प्रिंट/प्रारूप विधियों के बीच अंतर
- 16. भिन्नता और '-' के बीच क्या अंतर है?
- 17. के बीच क्या अंतर है:। और: आर !?
- 18. पेड़ की गहराई और ऊंचाई के बीच क्या अंतर है?
- 19. व्यू और सबव्यू के बीच अंतर - एंड्रॉइड
- 20. # {} $ {} और% {} के बीच क्या अंतर है?
- 21. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 22. $ और $$ के बीच क्या अंतर है?
- 23. "$^एन" और "$ +" के बीच क्या अंतर है?
- 24. क्लाइंट कॉलबैक और अजाक्स पेज विधियों के बीच अंतर - एएसपी.नेट
- 25. jquery.simulate.js और jQuery ईवेंट विधियों के बीच अंतर?
- 26. '.find' और '.where' विधियों के बीच प्रदर्शन अंतर
- 27. एंड्रॉइड: canvas.drawBitmap और BitmapDrawable.draw के बीच अंतर?
- 28. डीओएम और दस्तावेज़ कक्षाओं से getElementById विधियों के बीच अंतर
- 29. Magento उत्पाद लोड - loadByAttribute और लोड विधियों के बीच अंतर
- 30. रद्द करें बबल और स्टॉपप्रॉपैगेशन के बीच क्या अंतर है?
कि नहीं होगा कि वास्तव में क्या postInvalidate() करता है? – rupps
एंड्रॉइड के उदाहरण कोड में: http://developer.android.com/training/custom-views/index.html, एक PieChart.java है जिसमें संपत्ति गेटर्स और सेटर्स अंदर हैं। अधिकांश संपत्ति सेटर्स अमान्य(); कहते हैं। PieChart.java एक UI थ्रेड नहीं है और यह वहां से अमान्य कहां कॉल कर सकता है? (एक मुख्य गतिविधि जावा फ़ाइल है जो मुख्य धागा है)। मैं postinvalidate() के लिए एक कॉल की उम्मीद की होगी; जैसे कि उन्होंने PieChart.java में ऑन ड्रा विधि के तहत इसे कैसे किया। – Simon
@ सिमॉन मैंने कोड को नहीं देखा है, लेकिन PieChart.java अभी भी यूआई थ्रेड पर काम करेगा जब तक कि यह थ्रेड फैलाता है या किसी अन्य तरीके से उपयोग करने के लिए किसी अन्य थ्रेड को निर्दिष्ट नहीं करता है। संभवतः क्या हो रहा है कि पाई चार्ट खींचा गया है, फिर यूआई थ्रेड में एक व्यू पर पाई चार्ट खींचने के लिए पाई चार्ट के 'ऑन ड्रा' के भीतर 'postInvalidate() 'कहा जाता है। –