java - एंड्रॉइड UserManager.isUserAGoat () के लिए उचित उपयोग के मामले?



6 Answers

मुझे नहीं पता कि यह "आधिकारिक उपयोग केस" था, लेकिन निम्नलिखित जावा में एक चेतावनी उत्पन्न करता है (जो return स्टेटमेंट के साथ मिश्रित होने return संकलन त्रुटियों का उत्पादन कर सकता है, जिससे पहुंचने योग्य कोड नहीं होता है):

while (1 == 2) { // Note that "if" is treated differently
    System.out.println("Unreachable code");
}

हालांकि यह कानूनी है:

while (isUserAGoat()) {
    System.out.println("Unreachable but determined at runtime, not at compile time");
}

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

JLS बताता है कि if (false) विशिष्ट कारण के लिए "पहुंचने योग्य कोड" ट्रिगर नहीं करता है, तो यह डीबग झंडे के लिए समर्थन तोड़ देगा, यानी मूल रूप से इस उपयोग के मामले (एच / टी @auselen)। (उदाहरण के लिए static final boolean DEBUG = false; )।

if मैं अधिक अस्पष्ट उपयोग के मामले का उत्पादन कर रहा हूं, if मैं बदल गया। मेरा मानना ​​है कि आप ग्रहण की तरह अपने आईडीई की यात्रा कर सकते हैं, इस व्यवहार के साथ, लेकिन यह संपादन भविष्य में 4 साल है, और मेरे पास खेलने के लिए ग्रहण पर्यावरण नहीं है।

Question

मैं एंड्रॉइड 4.2 में पेश किए गए नए एपीआई देख रहा था। UserManager क्लास को देखते हुए मैं निम्नलिखित विधि में आया:

public boolean isUserAGoat()

यह निर्धारित करने के लिए प्रयोग किया जाता है कि यह कॉल करने वाला उपयोगकर्ता टेलीपोर्टेशन के अधीन है या नहीं।

यह लौटाता है कि उपयोगकर्ता यह कॉल कर रहा है या नहीं।

इसका उपयोग कब और कब किया जाना चाहिए?




@ डीजेक्लिन answer (जिस तरह से अच्छा जवाब!) को पूरक करना, इस फ़ंक्शन कॉल को आईडीई में ब्रेकपॉइंट रखने के लिए डमी कोड के रूप में भी इस्तेमाल किया जा सकता है जब आप कुछ विशिष्ट पुनरावृत्ति या किसी विशेष रिकर्सिव कॉल में रुकना चाहते हैं, उदाहरण के लिए:

isUserAGoat() को डमी वेरिएबल घोषणा के बजाए इस्तेमाल किया जा सकता है जो आईडीई में एक चेतावनी के रूप में दिखाया जाएगा और, एक्लिप्स विशेष मामले में, ब्रेकपॉइंट मार्क को बंद कर देगा, जिससे इसे सक्षम / अक्षम करना मुश्किल हो जाएगा। यदि विधि को एक सम्मेलन के रूप में उपयोग किया जाता है, तो सभी आमंत्रणों को बाद में कुछ स्क्रिप्ट द्वारा फ़िल्टर किया जा सकता है (प्रतिबद्ध चरण के दौरान शायद?)।

Google लोग भारी ग्रहण उपयोगकर्ता हैं (वे अपनी कई परियोजनाएं एक्लिप्स प्लगइन के रूप में प्रदान करते हैं: एंड्रॉइड एसडीके, जीएई, इत्यादि), इसलिए @ डीजेक्लिन जवाब और यह पूरक उत्तर बहुत कम समझ में आता है (कम से कम मेरे लिए)।




भाषण मान्यता के अनुशासन में, उपयोगकर्ताओं को बकरियों और भेड़ों में विभाजित किया जाता है।

उदाहरण के लिए, पृष्ठ 89 पर :

भेड़ें वे लोग हैं जिनके लिए भाषण मान्यता असाधारण रूप से अच्छी तरह से काम करती है, और बकरियां ऐसे लोग हैं जिनके लिए यह असाधारण रूप से खराब काम करता है। केवल आवाज पहचानकर्ता जानता है कि उन्हें अलग करता है। लोग भविष्यवाणी नहीं कर सकते कि किसकी आवाज आसानी से पहचानी जाएगी और जिसका नहीं होगा। सबसे अच्छी नीति इंटरफ़ेस को डिज़ाइन करना है ताकि यह सभी प्रकार के वातावरण में सभी प्रकार की आवाज़ें संभाल सके

शायद, भविष्य में बकरियों के रूप में एंड्रॉइड उपयोगकर्ताओं को बकरियों की जरूरतों के लिए भाषण मान्यता इंजन को कॉन्फ़िगर करने में सक्षम होने की योजना बनाई गई है। ;-)




एपीआई 21 (पहला एंड्रॉइड 5.0 / लॉलीपॉप एसडीके) के रूप में , यह पता लगाता है कि बकरी सिम्युलेटर ऐप इंस्टॉल है या नहीं:

/**
 * Used to determine whether the user making this call is subject to
 * teleportations.
 *
 * <p>As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this method can
 * now automatically identify goats using advanced goat recognition technology.</p>
 *
 * @return Returns true if the user making this call is a goat.
 */
public boolean isUserAGoat() {
    return mContext.getPackageManager()
            .isPackageAvailable("com.coffeestainstudios.goatsimulator");
}

इससे यह स्पष्ट हो जाना चाहिए कि if (false) एक संभावित विनाशकारी रणनीति है if (false) इसे चेतावनी मुक्त के रूप में उपयोग करने का डीजेक्लिन का सुझाव । जो पहले हर डिवाइस के लिए false लौटा था, वह अब एक यादृच्छिक यादृच्छिक मूल्य देता है: यदि इसे आपके कोड में काफी गहरा दफनाया गया था तो यह पता लगाने में काफी समय लग सकता है कि आपकी नई बग कहां से आ रही हैं।

निचली पंक्ति: यदि आप किसी विधि के कार्यान्वयन को नियंत्रित नहीं करते हैं और एपीआई दस्तावेज में बताए गए उद्देश्यों के अलावा इसका उपयोग करने का निर्णय लेते हैं, तो आप परेशानी के लिए जा रहे हैं।




ग्रह के सबसे दूरस्थ पहाड़ों में, बकरी की एक उन्नत प्रजाति है जो वर्तमान में मनुष्यों की तरह फोन का उपयोग करने में सक्षम है!

लीक फुटेज: youtu.be/YJwZMUn7GdQ

Google ने इसे देखा होगा और प्रौद्योगिकी उन्नति की अगली पंक्ति में रहने के प्रयास में उनके लिए समर्थन प्रदान करने का निर्णय लिया होगा।




कृपया नीचे स्रोत कोड देखें:

/**
 * Used to determine whether the user making this call is subject to
 * teleportations.
 *
 * <p>As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this method can
 * now automatically identify goats using advanced goat recognition technology.</p>
 *
 * @return Returns true if the user making this call is a goat.
 */
public boolean isUserAGoat() {
    return mContext.getPackageManager()
            .isPackageAvailable("com.coffeestainstudios.goatsimulator");
}



Related