我正在查看Android 4.2中引入的新API。在查看UserManager类时,我遇到了以下方法:
公共布尔值isUserAGoat()用于确定拨打此呼叫的用户是否需要进行远程传送。返回进行此调用的用户是否为山羊。
该如何使用以及何时使用?
我正在查看Android 4.2中引入的新API。在查看UserManager类时,我遇到了以下方法:
公共布尔值isUserAGoat()用于确定拨打此呼叫的用户是否需要进行远程传送。返回进行此调用的用户是否为山羊。
该如何使用以及何时使用?
当前回答
在每个版本的Android中都有一个有趣的命名方法/常量/whatever。
我所见过的唯一实际用途是在谷歌I/O大赛的最后一场比赛中,他们询问了特定版本的应用程序,看看参赛者是否阅读了每个版本的API差异报告。比赛也有编程问题,但一般来说,一些琐事可以先自动评分,以便将提交的数量降至更容易检查的合理数量。
其他回答
谷歌非常喜欢山羊和山羊复活节彩蛋。之前甚至有关于它的Stack Overflow帖子。
如前几篇文章所述,它也存在于Chrome任务管理器中(2009年首次出现在野外):
<message name="IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN" desc="The goats teleported column">
Goats Teleported
</message>
然后在2010年初的Windows、Linux和Mac版本的Chrome中)。“Goats Teleported”的数量实际上是随机的:
int TaskManagerModel::GetGoatsTeleported(int index) const {
int seed = goat_salt_ * (index + 1);
return (seed >> 16) & 255;
}
谷歌对山羊的其他引用包括:
用山羊割草山羊是baaaahk
据我所知,山羊和谷歌最早的关联是在最初的“用山羊割草”博客文章中。
我们可以放心地假设,它只是一个复活节彩蛋,除了返回错误之外,没有任何实际用途。
这不是内部笑话
显然它只是一个应用程序检查器山羊模拟器-咖啡色工作室
如果你安装了山羊模拟器,你就是一只山羊。如果你没有安装,你就不是山羊。
我想这更多是一个开发者的个人实验,最有可能找到有共同兴趣的人。
在每个版本的Android中都有一个有趣的命名方法/常量/whatever。
我所见过的唯一实际用途是在谷歌I/O大赛的最后一场比赛中,他们询问了特定版本的应用程序,看看参赛者是否阅读了每个版本的API差异报告。比赛也有编程问题,但一般来说,一些琐事可以先自动评分,以便将提交的数量降至更容易检查的合理数量。
从API 21(第一个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将其用作无警告的建议是一种潜在的灾难性策略。以前为每个设备返回的错误现在返回了一个看似随机的值:如果这个值在代码中埋得足够深,那么可能需要很长时间才能弄清楚新的bug来自何处。
一句话:如果你不控制一个方法的实现,并决定将其用于API文档中所述以外的目的,那么你就会遇到麻烦。
从可用性和可访问性的角度来看,了解您的用户是否是山羊很重要。
如果山羊想要真正受益于信息时代所提供的一切,那么它们的需求与软件的需求其实是截然不同的。
我觉得很好,一些好心的开发者关心我们所有的用户,而不仅仅是那些时尚的用户。