28

RequiresApi और TargetApi के बीच क्या अंतर है? kotlin मेंRequiresApi बनाम TargetApi एंड्रॉइड एनोटेशन

नमूना:

@RequiresApi(api = Build.VERSION_CODES.M) 
@TargetApi(Build.VERSION_CODES.M) 
class FingerprintHandlerM() : FingerprintManager.AuthenticationCallback() 

नोट: FingerprintManager.AuthenticationCallback एपीआई की आवश्यकता है M

नोट 2: अगर मैं TargetApi फाहा का उपयोग त्रुटि class requires api level 23...

उत्तर

15

@RequiresApi - बताता है कि एनोटेटेड तत्व केवल दिए गए API स्तर या उच्चतर पर ही कहा जाना चाहिए।

@TargetApi - इंगित करता है कि लिंट को किसी दिए गए एपीआई स्तर को लक्षित करने के रूप में इस प्रकार का इलाज करना चाहिए, इससे कोई फर्क नहीं पड़ता कि परियोजना का लक्ष्य क्या है।

13

के साथ विफल में Javadocs से न https://developer.android.com/reference/android/support/annotation/RequiresApi.html:

[@RequiresApi] यह पुराने @TargetApi एनोटेशन के उद्देश्य में समान है, लेकिन और अधिक स्पष्ट रूप से व्यक्त करता है कि इस फोन करने वाले पर एक आवश्यकता है, बल्कि विधि है कि minSdkVersion से अधिक के भीतर "दबाने" चेतावनी के लिए इस्तेमाल किया जा रहा है।

मुझे लगता है वे कार्यात्मक रूप से बराबर कर रहे हैं लेकिन @RequiresApi नए हो रहा है और अधिक कार्यक्षमता शामिल करने के लिए बढ़ाया जा रहा की संभावना अधिक होती है।

+0

@ पेन केयर यह बताने के लिए कि यह झूठा क्यों है? – hamena314

20

क्या माइक ने कहा, जैसा कि आप दस्तावेज में देख सकते हैं करने के लिए समान:

इंगित करता है कि एनोटेट तत्व केवल दी एपीआई स्तर या उच्च पर बुलाया जाना चाहिए।

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

आप यहाँ देख सकते हैं, यह वास्तव में फोन करने वाले एपीआई है कि जब इस विधि में बुला इस्तेमाल किया गया है सत्यापित करने के लिए बस अपने आईडीई/एक प्रकार का वृक्ष से चेतावनी को दूर करने के लागू कर रहा है, बजाय।

आप इसकी तुलना @NonNull या @Null एनोटेशन से कर सकते हैं, वे लागू करते हैं कि कॉलर फ़ंक्शन में शून्य मान नहीं भेज सकता/सकती है।

1

उनमें से दोनों अन्य एपीआई स्तरों को प्रभावित किए बिना नए एंड्रॉइड एपीआई स्तरों में जोड़े गए फीचर को संभालने के लिए हैं।

RequiresApi

@RequiresApi(api = Build.VERSION_CODES.*api_code*) 

यहाँ यह कहना है कि एनोटेट तत्व केवल दी एपीआई स्तर या उच्च पर बुलाया जाना चाहिए। दिए गए एपीआई स्तर के नीचे एनोटेटेड तत्व कॉल नहीं करेगा।

TargetApi

@TargetApi(Build.VERSION_CODES.*api_code*) 

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

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