Anwendungsfälle für Android UserManager.isUserAGoat () korrigieren?

Ich habe mir die neue API von Android 4.2 angesehen . Beim Betrachten der UserManager Klasse bin ich auf folgende Methode gestoßen:

 public boolean isUserAGoat() 

Wird verwendet, um zu ermitteln, ob der anrufende Benutzer teleportiert ist.

Gibt zurück, ob der Benutzer, der diesen Aufruf durchführt, eine Ziege ist.

Wie und wann sollte dies verwendet werden?

3288
14 нояб. eingestellt von Ovidiu Latcu 14. nov. 2012-11-14 11:34 '12 am 11:34 2012-11-14 11:34
@ 13 Antworten

Basierend auf ihrer Quelle hat diese Methode false bis sie in API 21 geändert wurde.

  public boolean isUserAGoat() { return false; } 

Es scheint, dass die Methode für uns als Entwickler keinen wirklichen Nutzen hat. Jemand hatte zuvor erklärt, dass dies ein Osterei sein könnte .

In API 21 wurde die Implementierung geändert, um zu prüfen, ob die installierte Anwendung com.coffeestainstudios.goatsimulator

  public boolean isUserAGoat() { return mContext.getPackageManager() .isPackageAvailable("com.coffeestainstudios.goatsimulator"); } 

Hier ist die Quelle und Veränderung .

1602
14 нояб. Die Antwort wird am 14. November gegeben. 2012-11-14 11:40 '12 am 11:40 2012-11-14 11:40

Ich weiß nicht, ob dies der "offizielle" Anwendungsfall war, aber im Folgenden wird Java gewarnt (was zu Kompilierungsfehlern führen kann, wenn sie mit return gemischt werden, was zu nicht erreichbarem Code führt):

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

Dies ist jedoch legal:

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

Ich stelle also häufig fest, dass ich eine dumme Dienstmethode für den schnellsten Weg schreibe, um einen Codeblock zum Schweigen zu bringen, und wenn ich mit dem Debuggen fertig bin, finde ich alle Aufrufe dazu. Wenn sich also die Implementierung nicht ändert, kann sie dafür verwendet werden.

JLS gibt an, if (false) nicht "unerreichbaren Code" aus dem Grund aufruft, dass die Unterstützung für Debug-Flags unterbrochen wird, d. im Grunde dieser Präzedenzfall (h / t @auselen). (zum Beispiel static final boolean DEBUG = false; ).

Ich habe while mit if , wodurch ein eher obskurer Anwendungsfall entsteht. Ich glaube, dass Sie mit diesem Verhalten Ihre IDE wie Eclipse ausschalten können, aber diese Bearbeitung ist 4 Jahre in der Zukunft, und ich habe keine Eclipse zum Spielen.

943
14 нояб. Die Antwort ist djechlin 14. November gegeben 2012-11-14 17:47 '12 am 17:47 2012-11-14 17:47

Dies scheint ein interner Witz bei Google zu sein. Es wird auch im Google Chrome-Task-Manager angezeigt. Er hat keinen anderen Zweck als einige Ingenieure, die das lustig finden. Was für ein Ziel an sich, wenn Sie wollen.

  • Öffnen Sie in Chrome den Task-Manager mit Umschalt + Esc .
  • Klicken Sie mit der rechten Maustaste, um eine Goats Teleported Spalte hinzuzufügen.
  • Wundere mich

Es gibt sogar einen riesigen Chrom-Fehlerbericht über zu viele teleportierte Ziegen .

2019

725
14 нояб. Die Antwort wird von user479870 14 Nov. gegeben. 2012-11-14 12:03 '12 am 12:03 2012-11-14 12:03

Zusätzlich zur @djechlin-Antwort (übrigens eine gute Antwort!), Kann dieser Funktionsaufruf auch als Dummy-Code zum Speichern eines Haltepunkts in der IDE verwendet werden, wenn Sie bei einer bestimmten Iteration oder einem bestimmten rekursiven Aufruf anhalten möchten. Beispiel:

2019

268
21 нояб. Die Antwort wird am 21. November von Higuaro gegeben. 2012-11-21 19:55 '12 um 19:55 Uhr 2012-11-21 19:55

Jede Version von Android hat eine lustige Methode / Konstante / was auch immer.

Die einzige praktische Anwendung, die ich je gesehen habe, war der letzte Aufruf des Google I / O- Wettbewerbs, in dem sie gefragt wurden, ob es in einer bestimmten Version wäre, ob die Teilnehmer den API-Diff-Bericht für jede Version lesen würden. Es gab auch Programmierprobleme bei der Konkurrenz, aber im Allgemeinen gab es einige Kleinigkeiten, die automatisch klassifiziert werden konnten, um die Menge an Materialien in vernünftigen Mengen zu bringen, die einfacher zu kontrollieren wären.

129
14 нояб. Die Antwort wird von Lance Nanek am 14. November gegeben. 2012-11-14 20:26 '12 um 20:26 Uhr 2012-11-14 20:26

Bei der Spracherkennung werden die Benutzer in Ziegen und Schafe unterteilt.

Zum Beispiel hier auf Seite 89 :

Schafe sind Menschen, für die die Spracherkennung außerordentlich gut funktioniert, und Ziegen sind Menschen, für die sie äußerst schlecht arbeitet. Nur ein Spracherkenner weiß, was sie voneinander unterscheidet. Menschen können nicht vorhersagen, wessen Stimme leicht zu erkennen ist und wessen Wille nicht. Die beste Richtlinie besteht darin, die Benutzeroberfläche so zu gestalten, dass sie mit allen Arten von Stimmen auf jedem Medium umgehen kann.

Möglicherweise ist es in Zukunft geplant, Android-Benutzer als Ziegen zu kennzeichnen, um die Spracherkennungs-Engine an die Bedürfnisse von Ziegen anpassen zu können. ;-)

118
31 мая '13 в 12:33 2013-05-31 12:33 Die Antwort wird gegeben rainer198 31. Mai 13 um 12:33 2013-05-31 12:33

Google hat eine starke Vorliebe für Ziegen und Ziegen- Ostereier . Es gab sogar vorherige Berichte zum Stack-Überlauf .

Wie bereits in früheren Beiträgen erwähnt, existiert es auch im Chrome Task Manager ( es erschien erstmals 2009 in freier Wildbahn ):

 <message name="IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN" desc="The goats teleported column"> Goats Teleported </message> 

Und dann unter Windows, Linux und Mac-Versionen von Chrome Anfang 2010 ). Die Anzahl der "Ziegen teleportiert" ist eigentlich zufällig :

  int TaskManagerModel::GetGoatsTeleported(int index) const { int seed = goat_salt_ * (index + 1); return (seed >> 16)  255; } 

Andere Google-Ziegen-Links sind:

Das früheste Verhältnis von Ziegen und Google gehört, wie ich beurteilen kann, im ursprünglichen Blog "Mähen mit Ziegen".

Wir können sicher davon ausgehen, dass dies nur ein Osterei ist und keinen wirklichen Nutzen hat, außer false .

112
15 нояб. die antwort wird von rickyduck 15 nov. gegeben . 2012-11-15 13:33 '12 am 13:33 2012-11-15 13:33

Ab API 21 (dem ersten Android 5.0 / Lollipop SDK) wird festgelegt, ob die Goat Simulator-Anwendung installiert wird :

  public boolean isUserAGoat() { return mContext.getPackageManager() .isPackageAvailable("com.coffeestainstudios.goatsimulator"); } 

Dies sollte deutlich machen, dass der Vorschlag von Djechlin, es ohne Vorwarnung als if (false) zu verwenden, eine potenziell katastrophale Strategie ist. Was zuvor für jedes Gerät als false , gibt jetzt einen scheinbaren Zufallswert zurück: Wenn es tief genug im Code vergraben wurde, kann es >

Fazit: Wenn Sie die Implementierung der Methode nicht steuern und nicht entscheiden, sie zu anderen als den in der API-Dokumentation angegebenen Zwecken zu verwenden, treten Probleme auf.

108
20 окт. Antwort von Mark Whitaker am 20. Oktober 2014-10-20 13:00 14 um 13:00 Uhr 2014-10-20 13:00 Uhr

Es gibt einen ähnlichen Aufruf, isUserAMonkey() , der true zurückgibt, wenn das MonkeyRunner-Tool verwendet wird . Die Erklärung des SDK ist so kurios wie diese.

 public static boolean isUserAMonkey(){} 

Gibt " true wenn die Benutzeroberfläche derzeit für einen Affen ausgeführt wird.

Hier ist die Quelle.

Ich erwarte, dass dies hinzugefügt wird, während auf das Tool Strange Function im ActivityManager gewartet wird: isUserAMonkey. Was bedeutet das, was nutzt es? .

99
17 нояб. Die Antwort ist KDEx vom 17. November. 2012-11-17 00:33 '12 at 0:33 2012-11-17 00:33
30 сент. die antwort gibt sergio carneiro am 30. sep. 2016-09-30 17:00 2016 um 17.00 Uhr 2016-09-30 17:00 Uhr

Lustiges Osterei.
In der Ubuntu Chrome-Version können Sie im Task-Manager ( Shift + Esc ) durch Klicken mit der rechten Maustaste eine wissenschaftliche Spalte hinzufügen, die in der italienischen Version "Capre Teletrasportate" (Teleported Goats) ist.

Lustige Theorie darüber hier .

32
06 февр. die antwort ist gegeben jc 06 feb 2014-02-06 13:35 '14 um 13:35 2014-02-06 13:35

Bitte sehen Sie den folgenden Quellcode:

  public boolean isUserAGoat() { return mContext.getPackageManager() .isPackageAvailable("com.coffeestainstudios.goatsimulator"); } 
1
28 сент. Antwort von Koustuv Ganguly vom 28. September 2018-09-28 16:49 '18 am 16:49 2018-09-28 16:49

Dies ist kein innerer Witz. Anscheinend ist dies nur eine Testanwendung für Goat Simulator - Coffee Stain Studios

Wenn Sie einen Ziegensimulator installiert haben, Ihre Ziege. Wenn es nicht installiert ist, sind Sie keine Ziege.

Ich glaube, es war eher ein persönliches Experiment eines der Entwickler, höchstwahrscheinlich ein soziales Experiment, um Menschen mit gemeinsamen Interessen zu finden.

0
17 нояб. Die Antwort wird Zillinium 17. November gegeben 2018-11-17 22:11 '18 um 22:11 Uhr 2018-11-17 22:11

Weitere Fragen zu Tags oder Frage stellen