Saya melihat API baru yang diperkenalkan di Android 4.2 . Sambil melihat UserManager
kelas saya menemukan metode berikut:
public boolean isUserAGoat()
Digunakan untuk menentukan apakah pengguna yang melakukan panggilan ini tunduk pada teleportasi.
Mengembalikan apakah pengguna yang membuat panggilan ini adalah kambing.
Bagaimana dan kapan ini harus digunakan?
java
android
usermanager
Ovidiu Latcu
sumber
sumber
Jawaban:
Dari sumbernya , metode yang digunakan untuk kembali
false
hingga diubah di API 21.Sepertinya metode ini tidak ada gunanya bagi kita sebagai pengembang. Seseorang sebelumnya menyatakan bahwa itu mungkin telur Paskah .
Di API 21 implementasinya diubah untuk memeriksa apakah ada aplikasi yang terinstal dengan paket tersebut
com.coffeestainstudios.goatsimulator
Inilah sumber dan perubahannya .
sumber
false
selamanya.Saya tidak tahu apakah ini adalah "kasus penggunaan resmi", tetapi yang berikut menghasilkan peringatan di Jawa (yang selanjutnya dapat menghasilkan kesalahan kompilasi jika dicampur dengan
return
pernyataan, yang mengarah ke kode yang tidak terjangkau):Namun ini legal:
Jadi saya sering menemukan diri saya menulis metode utilitas konyol untuk cara tercepat untuk mengeluarkan blok kode, kemudian dalam menyelesaikan debugging temukan semua panggilan ke sana, jadi asalkan implementasi tidak berubah ini dapat digunakan untuk itu.
JLS menunjukkan
if (false)
tidak memicu "kode tidak terjangkau" karena alasan tertentu bahwa ini akan merusak dukungan untuk flag debug, yaitu, pada dasarnya ini use case (h / t @auselen). (static final boolean DEBUG = false;
misalnya).Aku diganti
while
untukif
, memproduksi kasus penggunaan lebih jelas. Saya percaya Anda dapat menjebak IDE Anda, seperti Eclipse, dengan perilaku ini, tetapi pengeditan ini adalah 4 tahun ke depan, dan saya tidak memiliki lingkungan Eclipse untuk dimainkan.sumber
else
blok berikut , dll.isUserAGoat()
mengembalikan true jika pengguna menginstal aplikasi tertentu. Semoga berhasil mendiagnosis bahwa ketika kode Anda tiba-tiba mulai berperilaku aneh pada perangkat "acak"!Ini tampaknya menjadi lelucon dalam di Google. Ini juga ditampilkan di pengelola tugas Google Chrome. Ini tidak memiliki tujuan, selain beberapa insinyur menganggapnya lucu. Yang merupakan tujuan dengan sendirinya, jika Anda mau.
Goats Teleported
kolom.Bahkan ada laporan bug Chromium besar tentang terlalu banyak kambing yang diteleportasi .
Cuplikan kode sumber Chromium berikut dicuri dari komentar HN .
sumber
Melengkapi jawaban @djechlin (jawaban yang bagus!), Pemanggilan fungsi ini juga dapat digunakan sebagai kode dummy untuk menahan breakpoint dalam IDE ketika Anda ingin berhenti di beberapa iterasi tertentu atau panggilan rekursif tertentu, misalnya:
isUserAGoat()
dapat digunakan sebagai pengganti deklarasi variabel dummy yang akan ditampilkan dalam IDE sebagai peringatan dan, dalam kasus khusus Eclipse, akan menyumbat tanda breakpoint, membuatnya sulit untuk mengaktifkan / menonaktifkannya. Jika metode ini digunakan sebagai konvensi, semua doa bisa kemudian disaring oleh beberapa skrip (selama fase komit mungkin?).Orang-orang Google adalah pengguna Eclipse yang berat (mereka menyediakan beberapa proyek mereka sebagai plugin Eclipse: Android SDK, GAE, dll), jadi jawaban @djechlin dan jawaban komplementer ini sangat masuk akal (setidaknya untuk saya).
sumber
;
? Maksudku, kambing jelas lebih baik, tetapi sudah ada cara mudah untuk hal iniAda metode lucu bernama / konstan / apa pun di setiap versi Android.
Satu-satunya penggunaan praktis yang pernah saya lihat adalah dalam Panggilan Terakhir untuk Google I / O Contest di mana mereka bertanya apa itu untuk versi tertentu, untuk melihat apakah kontestan membaca laporan API berbeda untuk setiap rilis. Kontes memiliki masalah pemrograman juga, tetapi umumnya beberapa hal sepele yang dapat dinilai secara otomatis terlebih dahulu untuk mendapatkan jumlah pengiriman ke jumlah yang masuk akal yang akan lebih mudah untuk diperiksa.
sumber
Dalam disiplin pengenalan ucapan, pengguna dibagi menjadi kambing dan domba .
Misalnya, di sini di halaman 89 :
Mungkin, direncanakan untuk menandai pengguna Android sebagai kambing di masa depan untuk dapat mengkonfigurasi mesin pengenalan suara untuk kebutuhan kambing. ;-)
sumber
Google sangat menyukai telur Paskah berbasis kambing dan kambing . Bahkan ada posting Stack Overflow sebelumnya tentang hal itu .
Seperti yang telah disebutkan dalam posting sebelumnya, itu juga ada di dalam task manager Chrome ( pertama kali muncul di alam liar pada tahun 2009 ):
Dan kemudian di Chrome versi Windows, Linux dan Mac awal 2010 ). Jumlah "Kambing Teleportasi" sebenarnya acak :
Referensi Google lain untuk kambing termasuk:
Korelasi paling awal antara kambing dan Google termasuk dalam posting blog "Memotong dengan kambing" yang asli, sejauh yang saya tahu.
Kita dapat dengan aman berasumsi bahwa itu hanyalah telur Paskah dan tidak memiliki penggunaan di dunia nyata, kecuali untuk kembali
false
.sumber
Pada API 21 (Android 5.0 / Lollipop SDK pertama) , ini mendeteksi apakah aplikasi Goat Simulator diinstal:
Ini harus memperjelas bahwa saran djechlin untuk menggunakannya sebagai peringatan-bebas
if (false)
adalah strategi yang berpotensi bencana. Apa yang sebelumnya dikembalikanfalse
untuk setiap perangkat sekarang mengembalikan nilai yang tampaknya acak: jika ini terkubur cukup dalam dalam kode Anda, mungkin butuh waktu lama untuk mencari tahu dari mana bug baru Anda berasal.Intinya: jika Anda tidak mengontrol implementasi metode dan memutuskan untuk menggunakannya untuk tujuan selain yang dinyatakan dalam dokumentasi API, Anda menuju masalah.
sumber
if(false)
produksi? Ayo sini Jika seperti itulah kode Anda maka perubahan implementasi ini adalah yang paling tidak menjadi masalah Anda.Ada panggilan serupa
isUserAMonkey()
,, yang mengembalikan true jika alat MonkeyRunner sedang digunakan. Penjelasan SDK sama penasarannya dengan yang ini.Ini sumbernya.
Saya berharap bahwa ini ditambahkan untuk mengantisipasi alat SDK baru bernama sesuatu dengan kambing dan benar - benar akan berfungsi untuk menguji keberadaan alat itu.
Lihat juga pertanyaan serupa, Fungsi aneh di ActivityManager: isUserAMonkey. Apa artinya ini, apa gunanya? .
sumber
ActivityManager
untuk melaporkan jika telah dipanggil olehmonkey
alat pengujian stres ui, tetapi saya tidak pernah mengkonfirmasi ini.Telur Paskah lucu.
Di Chrome versi Ubuntu, di Task Manager ( shift+ esc), dengan klik kanan Anda dapat menambahkan kolom sci-fi yang dalam versi Italia adalah "Capre Teletrasportate" (Kambing Teleportasi).
Sebuah teori lucu tentang itu ada di sini .
sumber
Ini bukan lelucon dalam
Rupanya itu hanya pemeriksa aplikasi untuk Goat Simulator - oleh Coffee Stain Studios
Jika Anda telah menginstal Goat Simulator, Anda adalah seekor kambing. Jika Anda belum menginstalnya, Anda bukan kambing.
Saya membayangkan itu lebih merupakan eksperimen pribadi oleh salah satu pengembang, kemungkinan besar untuk menemukan orang-orang dengan minat yang sama.
sumber