我一直在寻找在推出新的API 的Android 4.2 。 虽然看UserManager
类,我碰到下面的方法:
public boolean isUserAGoat()
用于确定使该呼叫的用户是否受到teleportations。
返回在进行此调用用户是否是山羊。
应该如何和何时该使用?
我一直在寻找在推出新的API 的Android 4.2 。 虽然看UserManager
类,我碰到下面的方法:
public boolean isUserAGoat()
用于确定使该呼叫的用户是否受到teleportations。
返回在进行此调用用户是否是山羊。
应该如何和何时该使用?
从他们的来源 ,该方法用于返回false
,直到它在API 21被改变。
/**
* 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;
}
它看起来像方法对我们没有实际使用的开发人员。 有人曾表示,它可能是一个复活节彩蛋 。
在21 API执行改为检查是否有与包的安装的应用程序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");
}
这里是源和变化 。
我不知道这是否是“”官用例,但下面产生在Java中(可以进一步产生如果与混合编译错误警告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)
不会触发“可达代码”的具体原因,这将打破调试标志的支持,也就是说,基本上这个用例(H / T @auselen)。 ( static final boolean DEBUG = false;
例如)。
我更换while
为if
,产生更模糊的使用情况。 我相信你可以绊倒你的IDE,比如Eclipse,这种行为,但此编辑为4年后的未来,我没有一个Eclipse环境中一起玩。
这似乎是在谷歌内部的笑话。 它也采用了谷歌Chrome的任务管理器。 它没有目的,比一些工程师发现很有趣其他。 这本身就是一个目的,如果你愿意。
Goats Teleported
列。 甚至还有约一个巨大的铬bug报告太多被传山羊 。
下面的铬源代码片段从被盗HN意见。
int TaskManagerModel::GetGoatsTeleported(int index) const {
int seed = goat_salt_ * (index + 1);
return (seed >> 16) & 255;
}
补充@djechlin 答案 (!好回答的方式),这个函数调用也可以用于作为虚拟代码保持一个断点在IDE中,当你想停止在某些特定的迭代或特定的递归调用,例如:
isUserAGoat()
可被用来代替将在IDE所示被作为警告,并且在Eclipse特定情况下的伪变量声明,将堵塞断点标记,使得难以打开/关闭它。 如果该方法作为惯例,所有调用以后可以通过一些脚本过滤(在提交阶段可能?)。
谷歌人是沉重的Eclipse用户(他们提供一些他们的项目作为Eclipse插件:Android SDK中,GAE等),所以@djechlin答案,这个答案补充作出了很大的意义(至少对我来说)。
有一个有趣的命名的方法/常数/不管在Android中的每个版本。
我见过的唯一的实际用途是最后一次通话的谷歌I / O比赛,他们问这是什么的一个特定版本,看看是否参赛者阅读各版本的API差异报告。 本次大赛已编程的问题太多,但通常一些琐事,可以自动分级先拿到意见书的数量减少到合理的金额,会更容易检查。
在语音识别的纪律,用户分为山羊和绵羊 。
举例来说,这里89页 :
羊是人们对他们来说,语音识别的工作非常好,和山羊是人而言,它的工作原理非常糟糕。 只有语音识别知道什么将它们分开。 人们无法预测谁的声音会很容易识别,并且其不会。 最好的策略是设计接口,因此它可以处理各种声音在各种恶劣环境
也许,它计划将标志着Android用户在将来山羊能够配置山羊需求的语音识别引擎。 ;-)
谷歌有山羊和山羊基于严重的喜好复活节彩蛋 。 目前甚至已经先前关于它的堆栈溢出的职位 。
正如在以前的文章已经提到,它也是Chrome的任务管理器中存在( 它第一次在野外出现在2009年 ):
<message name="IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN" desc="The goats teleported column">
Goats Teleported
</message>
然后在Windows和Chrome的Linux和Mac版本2010年初 )。 “被传山羊”的数量实际上是随机的 :
int TaskManagerModel::GetGoatsTeleported(int index) const {
int seed = goat_salt_ * (index + 1);
return (seed >> 16) & 255;
}
以山羊其他谷歌的参考文献包括:
山羊和谷歌最早的相关性属于在原有的“山羊割草”的博客文章,据我可以告诉。
我们可以有把握地认为它只是一个复活节彩蛋,并没有实际使用,除了返回false
。
正如API 21(第1与Android 5.0 /棒棒糖SDK)的 ,此检测是否山羊模拟器被安装的应用:
/**
* 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");
}
这应该说清楚, djechlin的建议使用它作为一个无警告的if (false)
是一个潜在的灾难性的策略。 什么以前返回false
每个设备现在返回一个看似随机值:如果这是深埋足够你的代码,它可能需要很长的时间来找出新的bug的来源。
底线:如果你不控制方法的实现,并决定将其用于其他目的,而不是API文档中说明,你就会惹麻烦。
还有一个类似的呼吁, isUserAMonkey()
如果返回true MonkeyRunner工具被使用。 该SDK的解释就是因为这一个好奇。
public static boolean isUserAMonkey(){}
返回
true
如果用户界面正在与猴子混乱。
这里是源。
我希望这是在一个新的预期增加SDK工具名为东西,山羊和实际上是功能性测试该工具的存在。
也看到了类似的问题, 在ActivityManager奇怪的功能:isUserAMonkey。 这是什么意思,有什么用途? 。
有趣的复活节彩蛋。
在Ubuntu版Chrome浏览器,在任务管理器(SHIFT + ESC),用鼠标右键单击您可以添加一个科幻列,在意大利语版本是“卡普雷Teletrasportate”(传送人数山羊)。
关于它的一个有趣的理论是在这里 。
请看下面的代码:
/**
* 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");
}
它不是一个内部笑话显然,这只是一个应用程序检查山羊模拟器-由咖啡渍工作室
如果你安装了山羊模拟器,你是一个山羊。 如果你没有安装它,你不是山羊。
我想这更多的是个人的实验通过的开发者之一,最有可能的一个社会实验,以寻找具有共同兴趣的人。