Android: आशय के लिए सेटफ्लैग और ऐडफ्लैग के बीच अंतर क्या है


101

आशय के लिए setFlags और addFlags के बीच अंतर क्या है। क्या कोई इसे समझा सकता है। सराहना की मदद।


मैं हमेशा आधिकारिक डॉक्स के लिए एक लिंक की सराहना करता हूं: developer.android.com/reference/android/view/… और / या developer.android.com/reference/android/view/…
MarkHu

जवाबों:


133

जब आप उपयोग setFlagsकरते हैं तो आप पुराने झंडे की जगह ले रहे होते हैं ... जब आप उपयोग addFlagsकरते हैं तो आप नए झंडे जोड़ रहे होते हैं। याद रखें, एक झंडा सिर्फ एक पूर्णांक है जो दो की शक्ति है ... बाइनरी में, झंडे इस तरह दिखते हैं: 1, 10, 100, 1000, आदि ... (जो इस मामले में 1, 2, 4, 8 हैं) । तो, क्या addFlagsआप |ऑपरेटर का उपयोग कर पास पूर्णांक जोड़ रहा है ।

// example... 
// value of flags: 1
intent.setFlags(2|4); 
// now flags have this value: 110
intent.addFlags(8); 
// now flags have this value: 1110

यह कैसे संभव intent.setFlags(2|4);हो सकता है 110 मूल्य देगा
गोपाल सिंह सिरवी

6
@ GopalSinghSirvi मानव पठनीय मूल्यों के लिए LSB (कम से कम महत्वपूर्ण बिट) द्विआधारी में सबसे सही है। इसका मतलब है कि 110 का 0 मान 2 ^ 0 = 1 का प्रतिनिधित्व करता है। दूसरा मान 1 2 ^ 1 = 2. और तीसरा मान 2 ^ 2 = 4 का प्रतिनिधित्व करता है। तो OR का उपयोग कर | 4 (100) और 2 (010) पर ऑपरेटर 110 है
पैट्रिक

यह Window.setFlags / addFlags के साथ भ्रमित नहीं होना चाहिए, जिनका इंटेंट तरीकों में एक अलग व्यवहार है।
आईआईटी

क्या मुझे इन इरादों के झंडे के उपयोग के बारे में पता है? या क्या आप मुझे उपयुक्त प्रश्न पर टैग कर सकते हैं?
अनीश कुमार

11
intent.setFlags(int num);

यह सेट फ्लैग नियंत्रित करता है कि इंटेंटसेटग को कैसे संभालना है यह मुख्य रूप से इंटेंट द्वारा निष्पादित किए जा रहे घटक के प्रकार पर निर्भर करता है। यह एक ही स्टेटमेंट में कई कॉल का पीछा करने के लिए एक ही इरादा ऑब्जेक्ट देता है।

intent.addFlags(int num);

यह मौजूदा मानों के साथ एक विशेष इरादे के लिए अतिरिक्त झंडे जोड़ने में मदद करता है। यह भी एक ही बयान में कई कॉल का पीछा करने के लिए एक ही इरादा वस्तु देता है।


6
 public Intent addFlags(int flags) {
    mFlags |= flags;
    return this;
}
public Intent setFlags(int flags) {
    mFlags = flags;
    return this;
}

इसे संदर्भ के लिए स्रोत कोड से पाया गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.