Soru Android UserManager.isUserAGoat () için uygun kullanım durumları?


Tanıtılan yeni API'lara bakıyordum Android 4.2. Bakarken UserManager Sınıfı aşağıdaki yöntemle karşılaştım:

 public boolean isUserAGoat()

Bu aramayı yapan kullanıcının ışınlanmalara tabi olup olmadığını belirlemek için kullanılır.

Bu çağrıyı yapan kullanıcının bir keçi olup olmadığını döndürür.

Bu nasıl ve ne zaman kullanılmalıdır?


3144
2017-11-14 08:34


Menşei


ayrıca IBinder üzerinde LIKE_TRANSACTION ve TWEET_TRANSACTION developer.android.com/reference/android/os/...  developer.android.com/reference/android/os/... - auselen
Tesadüfen, Chrome'un "Goats Teleported" iç istatistiği de var. Muhtemelen, bir bellek yönetim tekniği için bir çeşit iç isimdir. - Eric Martindale
Değişikliğin kaynağı: https://android.googlesource.com/platform/frameworks/base/+/e4ab16ad98b183afbf7a21ad7314372de41a8b57%5E! - kennytm
@djechlin belki de meşrudur, ancak OP kullanıcı1597833'ün cevabı kabul etmeli ve kaynağı ve orduları geçmesi gereken cevabı kabul etmelidir. Böyle bir sorunun bu kadar çekiş kazanması saçmadır. Sadece bu soruyu sormak ve açık kalmasına izin vermek anlamsız görünüyor. - swasheck
Bu bir böcek. Her zaman yanlış döndürür :( healthyhomesteading.com/wp-content/uploads/2011/05/goat.jpg - Thomas


Cevaplar:


Onların kaynak, geri dönmek için kullanılan yöntem false API 21'de değiştirilene kadar.

/**
 * Used to determine whether the user making this call is subject to
 * teleportations.
 * @return whether the user making this call is a goat 
 */
public boolean isUserAGoat() {
    return false;
}

Yöntemin geliştiriciler olarak bizim için gerçek bir kullanımı olmadığı anlaşılıyor. Birisi daha önce bir Paskalya yumurtası.

API 21'de, paket ile yüklü bir uygulamanın olup olmadığını kontrol etmek için uygulama değiştirildi com.coffeestainstudios.goatsimulator

/**
 * 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");
}

İşte kaynak bağlantısı


1514
2017-11-14 08:40



maymunlarımız var developer.android.com/reference/android/app/... - auselen
Teori: Keçi, uçsuz bucaksız kayalıklar gibi her türlü istikrarsız yerde bulunur, muhtemelen düzenli olmayan keçi kullanıcılarından aldıkları konum trendleridir. Yazılımın, keçiler için tasarlanan algoslarla konumlarını belirlemeye çalıştıkça, çılgınca yer değiştirmeye çalışan keçiler olabilecek “teleportasyonları” açıklayabilir. - tedders
#define false random() % 2ama bu Java değil ... - ppalasek
Bu bir tarih dersi, cevap değil. Paskalya yumurtası olsa bile, bunun için geçerli bir kullanım durumu var mı? Bir Paskalya yumurtası olmak, onun yararlı olmasını engellemez ve yararlı olup olmadığını göstermezsiniz. - casperOne
Bu işlevi yanlızca kullanan ve geri dönmesini bekleyen herkes için üzülüyorum. false sonsuza dek. - Martin Konecny


Bunun "resmi kullanım" durumu olup olmadığını bilmiyorum, ancak aşağıdakiler Java'da bir uyarı üretiyor: return ulaşılamaz kodlara yol açan ifadeler):

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

Ancak bu yasaldır:

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

Bu yüzden genellikle kendimi bir kod bloğunu taklit etmenin en hızlı yolu için aptalca bir yardımcı program metodu yazarken buluyoruz, daha sonra hata ayıklama işlemini tamamlayarak tüm aramaları bulmaya çalışıyorum, bu yüzden uygulamanın değişmemesi durumunda bunun için kullanılabilir.

JLS işaret if (false) Bu, hata ayıklama bayraklarına, yani temel olarak bu kullanım durumunun (h / t @ auselen) desteğinin kırılmasına neden olacak belirli bir nedenle "erişilemez kod" u tetiklemez. (static final boolean DEBUG = false; Örneğin).

Ben değiştirdim while için ifDaha anlaşılmamış bir kullanım örneği üretiyor. ben inanmak Bu davranışla Eclipse gibi IDE'nizi yükseltebilirsiniz, ancak bu düzenleme geleceğe 4 yıldır ve oynamak için bir Eclipse ortamım yok.


917
2017-11-14 14:47



denediniz mi (yanlış) {statement;}? - penguat
eğer (Boolean.FALSE) {...} genellikle işe yarıyor gibi görünüyorsa. - Guerrero
@djechlin Bunun sadece android olup olmadığını bilmiyorum, standart java `da (false) {...}` sadece iyi derler (open jdk javac 1.6 ve 1.7) - josefx
@PeterOlson - özellikle eğer bir kodun yanlış veya doğru olduğu bir kod dalını test etmeye çalışıyorsanız, bunu simüle etmenin en kesin ve açık yolu budur - eğer uygun bir şekilde eşleşmezseniz bloğun yorumlanması daha az doğru olabilir bloğun sonu (belki de hemen takip ederseniz / / sağdaki bir blok farketmediniz), aşağıdakileri zorlarsanız bir derleme hatasına yol açacaktır else blok vb - djechlin
"uygulamanın değişmemesi şartıyla" - ve problem var. Bu, bir uyarı içermeyen "if (false)" uygulamasını uygulamak için felaketli bir yoldur, çünkü uygulama değişebilir ve değişebilir. Bu soruya verdiğim yanıtı gör: API21'den itibaren isUserAGoat() Bir kullanıcı belirli bir uygulamayı yüklediyse true değerini döndürür. Kodunuz aniden "rastgele" cihazlarda garip davranmaya başladığında teşhis edilmesi için iyi şanslar! - Mark Whitaker


Bu, Google'da bir iç şaka gibi görünüyor. Ayrıca, Google Chrome görev yöneticisinde de yer almaktadır. Bazı mühendislerin onu eğlenceli bulduğundan başka bir amacı yoktur. Eğer kendi başına bir amaç, eğer yapacaksan.

  1. Chrome'da, Görev Yöneticisi'ni açın. vardiya+ESC.
  2. Eklemek için sağ tıklayın Goats Teleported sütunu.
  3. Merak etmek.

Büyük bir Chromium hata raporu bile var. çok sayıda teleported keçi.

chrome 

Aşağıdaki Chromium kaynak kod snippet'i çalınan HN yorumlar.

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

706
2017-11-14 09:03



bende yok, nereyi tıklıyorsun? veya ne için kullanılır - auselen
@auselen Goats Teleported sütununu eklemek için açılır menüyü görmek için bir sütun başlığına sağ tıklamalısınız (en azından OS X'de Chrome'da böyle çalışır). cl.ly/Ksbd - greenie
Windows XP + en yeni Chrome = orada değil, Ubuntu'da görüyorum. - auselen
Windows 7'yi çalıştıran Chrome son doe de bunu göstermiyor. : / - Isuru
İç şakanın şu anki kökenleri var: googleblog.blogspot.be/2010/04/goats-are-baaaahk.html - CupOfTea696


@Djechlin tamamlayıcısı Cevap (Bu arada iyi cevap!), bu işlev çağrısı olabilir Ayrıca Belirli bir yinelemede veya belirli bir özyinelemede durmak istediğinizde IDE'de bir kesme noktasını tutmak için kukla kod olarak kullanılır. Örneğin:

enter image description here

isUserAGoat() IDE'de bir uyarı olarak gösterilecek bir kukla değişken bildirimi yerine kullanılabilir ve Eclipse'de özel durum, kesme işareti işaretini tıkar ve onu etkinleştirmeyi / devre dışı bırakmayı zorlaştırır. Yöntem bir sözleşme olarak kullanılıyorsa, tüm çağrılar daha sonra bazı senaryolar tarafından filtrelenebilir (taahhüt aşamasında belki?).

enter image description here

Google çalışanları ağır Eclipse kullanıcılarıdır (Eclipse eklentileri olarak birkaç projeyi sağlarlar: Android SDK, GAE, vb.), Bu nedenle @djechlin yanıtı ve bu tamamlayıcı cevap çok anlamlı (en azından benim için).


258
2017-11-21 16:55



Bir şeyi hızlıca test etmek için "kukla" kodu yazıyorsanız, bir Eclipse uyarısıyla ilgili sorun nedir? Sanırım bu, unuttuğunuzda bulabileceğiniz kadar büyük. - Tomasz
@Tomasz problemi, Eclipse'de, uyarı işareti kesme noktasını karıştırıyor ve devre dışı bırakmak ya da kaldırmak için kesme noktası görünümünü açmanız gerekiyor. - higuaro
Evet, bunun için bir çözümüm var. Uyarı sembolüne sağ tıklayıp "Toggle Breakpoint" öğesini seçebilirsiniz. Aşağıdaki satır / seçenek etkinleştirilirse, kesme noktası oluşturulur demektir. Benim amacım, sahte kod kötü ve unutmamak için bir uyarı olmalı;) - Tomasz
@Tomasz Bu çözümün problemi, kırılma noktasının nerede olduğunu önceden bilmenizdir, bu yüzden basit bir görsel denetim, uyarının bir kesme noktasını gizlediğini, daha iyi bir çözümün bile olsa, koşullu kesme noktalarını kullanacağını size bildirmez. Kukla kodu (ve kongre yöntemlerini) tamamen unutabilirsiniz, ancak bunlar IDE'ler arasında farklılık gösterir ve iş istasyonları arasında otomatik olarak paylaşılamaz. - higuaro
Neden sadece null ifadesi kullanmıyoruz ;? Yani, keçiler açıkça daha iyi, ama zaten bu etrafında kolay bir yolu var - Chris M.


Android'in her sürümünde komik bir adlandırılmış yöntem / sabit / her ne varsa.

Gördüğüm tek pratik kullanım, Son Çağrı için Google I / O Yarışmacıların her sürüm için API fark raporunu okuduğunu görmek için belirli bir sürümün ne olduğunu sordukları yarışma. Yarışmada programlama problemleri de vardı, ancak genellikle kontrol edilmesi daha kolay olan makul miktarlara kadar olan başvuruların sayısını almak için önce otomatik olarak derecelendirilebilecek bazı bilgiler eklendi.


122
2017-11-14 17:26



"Android'in her sürümünde komik bir adlandırılmış yöntem / sabit / her ne varsa." Biraz isim verebilir misin? - Angelo.Hannes
Örneğin, Log.wtf adında bir günlüğün, Ne Korkunç Bir Arıza: P olarak adlandırdığı bir niveli vardır: P - Aracem
Delphi'nin EProgrammerNotFound'u gibi bir şey mi? stackoverflow.com/questions/2084120/... - Gerry Coll
HoneyComb AdapterViewAnimator'dır. # FyiWillBeAdvancedByHostKThx () - Lance Nanek
@ Angelo.Hannes, Yerçekimi için Sensör Sabitlerinde Ölüm Yıldızı (Star Wars) için bir tane var. - st0le


Konuşma tanıma disiplininde, kullanıcılar keçiler ve koyunlar.

Örneğin, burada sayfa 89:

Koyunlar, konuşma tanıma sistemi son derece iyi çalışan kişilerdir ve keçiler, son derece kötü çalışan kişilerdir. Sadece ses tanıyıcı onları ayıran şeyi bilir. İnsanlar kimin sesinin kolayca tanınacağını ve kimin yapamayacağını öngöremezler. En iyi politika, arayüzü her türlü ortamdaki her türlü sesle başa çıkabilecek şekilde tasarlamaktır.

Belki de, keçilerin ihtiyaçları için konuşma tanıma motorunu yapılandırabilmek için gelecekte Android kullanıcılarını keçiler olarak işaretlemek planlanmaktadır. ;-)


110
2018-05-31 09:33





Google'ın keçi ve keçi temelli ciddi bir beğenisi var Paskalya yumurtaları. Hatta olmuştur Önceki Stack Overflow mesajları.

Önceki yayınlarda da belirtildiği gibi, aynı zamanda Chrome görev yöneticisinde de var.ilk 2009 yılında vahşi ortaya çıktı):

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

Ve sonra Windows, 2010'un başında Linux, Linux ve Mac sürümlerinde). "Goats Teleported" sayısı aslında rasgele:

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

Keçiler için diğer Google referansları şunları içerir:

Keçilerin ve Google'ın en eski ilişkileri, söyleyebileceğim kadarıyla orijinal "keçilerle yapılan" blog gönderisine aittir.

Sadece bir Paskalya yumurtası olduğunu ve geri dönenler hariç gerçek dünya kullanımının olmadığını güvenle söyleyebiliriz. false.


104
2017-11-15 10:33



IBM'in ayrıca çeşitli dahili yazılımlar boyunca keçi referanslarına sahip olduğu söylentileri de vardır. - goat