2010-07-23 7 views
5

की एनाटॉमी मुझे एंड्रॉइड के लिए गतिविधि के रन लूप के विवरण पर कोई दस्तावेज नहीं दिख रहा है।एंड्रॉइड रन लूप

ऐप्पल "anatomy of a run loop" दस्तावेज करता है, और यह काफी है जो मैं ढूंढ रहा हूं। एंड्रॉइड प्रलेखन सिर्फ अपने जीवन चक्र राज्य आरेख में "Activity Is Running" कहता है। जाहिर है कि किसी प्रकार के रन लूप द्वारा समर्थित है।

किसी के पास किसी गतिविधि के रन लूप के आंतरिक में कुछ अंतर्दृष्टि (उर्फ दस्तावेज़ीकरण) है?

संपादित करें - मुझे यह स्पष्ट करना चाहिए कि मुझे लगता है कि रन लूप वास्तव में स्वामित्व में है और मुख्य यूआई थ्रेड द्वारा चलाया जाता है। वर्तमान गतिविधि की कार्यक्षमता को इस निश्चित रूप से एक निश्चित बिंदु पर इंजेक्शन दिया जाता है। मुझे समग्र यूआई थ्रेड रन लूप में दिलचस्पी है, साथ ही इसमें गतिविधि में क्या भूमिका निभाई गई है।

+0

मुझे याद आ जाना चाहिए। "गतिविधि चल रही है" की तुलना में और अधिक जानकारी की आवश्यकता है? यह लूप क्यों करता है कि उस लूप में एंड्रॉइड क्या कर रहा है, जब तक आप अपने ऐप को करने के लिए उचित चीजों को लागू या 'विस्तारित' करते हैं, उसे करने के लिए क्या करना चाहिए? – kiswa

+0

क्योंकि जब आप थ्रेडेड अनुप्रयोग लिख रहे हैं, तो रन लूप की विशेषताएं विभिन्न कारणों से उपयोगी जानकारी हो सकती हैं। उस ने कहा, मुझे लगता है कि जिज्ञासा अकेले वैध कारण होगा। – DougW

+0

"गतिविधि के रन लूप के आंतरिक में अंतर्दृष्टि" के लिए पूछना एक सवाल का बहुत व्यापक है। – CommonsWare

उत्तर

3

संक्षिप्त उत्तर है, "इसके बारे में चिंता न करें, यह आपके लिए किया गया है।"

गतिविधियां और अन्य संरचनाएं android.os.Looper के शीर्ष पर बैठती हैं, android.os.Handler के उदाहरणों के माध्यम से इसके साथ संवाद करती हैं। एक Looper आपके "रन लूप" को कतार से संदेशों को प्रेषित करता है और जब यह खाली होता है तो थ्रेड को अवरुद्ध करता है। Handler एस थ्रेड के Looper के साथ संवाद करता है और संदेश कतार के साथ काम करने के लिए एक तंत्र प्रदान करता है।

अधिकांश समय आपको किसी एक के साथ सीधे काम करने की आवश्यकता नहीं होगी। आपके प्रमुख एप्लिकेशन घटकों जैसे गतिविधियों और सेवाओं के लिए लाइफसाइकिल ईवेंट आपके कोड पर भेजे जाएंगे। आप क्या हुड के नीचे है के लिए उत्सुक हैं, तो दोनों के लिए स्रोत उपलब्ध हैं:

कुछ

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/Looper.java

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/Handler.java

+0

मैं उम्मीद कर रहा था कि इस जानकारी का एक अधिक पच गया संस्करण था, लेकिन यदि वहां नहीं है और यह जवाब है। धन्यवाद एडैम्प। – DougW

0

अपडेट किया गया:

वास्तव में विशिष्ट से संबोधित किया जाता जा रहा है कुछ भी नहीं है "गतिविधि चल रहा है।" गतिविधि बस अपना यूआई प्रदर्शित कर रही है, इनपुट को संभालने, किसी भी आवश्यक कार्यों को निष्पादित करने और दूसरी गतिविधि शुरू करने के लिए है।

यदि आप रूचि-लूप पर बहु-थ्रेडिंग के प्रभाव में रुचि रखते हैं, तो वास्तव में ठोस संबंध नहीं है। आपके धागे सिर्फ अपना काम कर सकते हैं, और गतिविधि की स्थिति स्वतंत्र रूप से कार्य करेगी और स्वचालित रूप से इसके यूआई को अपडेट करेगी (बशर्ते आप postInvalidate() सही तरीके से कॉल करें)।


मूल: http://developer.android.com/reference/android/app/Activity.html

यह प्रत्येक गतिविधि का "जीवनकाल" निर्दिष्ट करता है और क्या कहता है यह, में किया जा सकता है कि अगर आप क्या करना है:

इस पृष्ठ पर पहले चित्र पर एक नजर डालें देख रहे हैं

+0

जो मैंने जोड़ा है ... मैं जानना चाहता हूं कि "गतिविधि चल रही है" में क्या हो रहा है। – DougW

+0

वूप्स, मेरी गलती। मैं एक मिनट में अपना जवाब संपादित करूंगा। –

+0

कोई समस्या एंडी नहीं। हालांकि निश्चित रूप से एक अंतर्निहित रन लूप है, और मुझे यकीन है कि यह आईफोन के लिए लिंक किए गए जैसा दिखता है। गतिविधियां "चलने" की स्थिति को वैश्विक यूआई थ्रेड के रनलोप में अनुमानित रूप से इंजेक्शन दिया गया है, लेकिन कॉलबैक, राज्य इत्यादि की जांच के लिए प्रत्येक लूप पर निश्चित रूप से कदमों का अपना सेट है। मैं उत्सुक हूं कि वह पूरे शेबांग कैसा दिखता है। – DougW

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