当前位置: 首页 > 知识库问答 >
问题:

Android UserManager.isUserAgoat()的正确用例?

宗政财
2023-03-14

我正在查看Android4.2中引入的新API。 在查看UserManager类时,我遇到了以下方法:

public boolean isUserAGoat()

用于确定发出此呼叫的用户是否受到远程传送的影响。

返回进行此调用的用户是否为GOAT。

这应该如何使用,何时使用?

共有3个答案

车辰龙
2023-03-14

这似乎是谷歌内部的一个笑话。 谷歌Chrome任务管理器中也有它的功能。 除了一些工程师觉得有趣之外,它没有任何目的。 这本身就是一个目的,如果你愿意的话。

  1. 在Chrome中,使用shift+esc打开任务管理器。
  2. 右键单击可添加Goats Teleport列。
  3. 疑惑。

甚至有一个巨大的铬虫报告关于太多的传送山羊。

下面的Chromium源代码片段是从HN注释中偷来的。

int TaskManagerModel::GetGoatsTeleported(int index) const {
  int seed = goat_salt_ * (index + 1);
  return (seed >> 16) & 255;
}
乐正烨熠
2023-03-14

我不知道这是否是“正式的”用例,但以下内容在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;)。

我将html" target="_blank">while替换为if,产生了一个更模糊的用例。 我相信您可以使用这种行为来破坏您的IDE(比如Eclipse),但是这个编辑已经是4年之后的事情了,而且我还没有一个Eclipse环境可供使用。

邢博学
2023-03-14

从它们的源,用于返回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;
}

看起来该方法对我们这些开发人员来说没有真正的用处。 之前有人说这可能是个复活节彩蛋。

在API 21中,实现被更改为检查是否安装了带有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");
}

这里是来源和变化。

 类似资料:
  • 问题内容: 想要改善此职位? 提供有关此问题的详细答案,包括引文和为什么您的答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我正在查看Android 4.2中 引入的新API 。在查看类时,我遇到了以下方法: 用于确定发出此呼叫的用户是否受到传送。 返回进行此呼叫的用户是否是山羊。 应该如何以及何时使用? 问题答案: 从其 来源开始 ,该方法一直用于返回,直到在API 21中对其进行更改为

  • 问题内容: 我现在正在开发应用程序,并进行全局切换。我想包装起来以方便使用。 然后,我在Firefox控制台中得到此结果。 如果我想使用被呼叫的行号登录该怎么办? 问题答案: 这是一个古老的问题,提供的所有答案都太过分了,存在跨浏览器的重大问题,并且没有提供任何超级有用的东西。该解决方案可在每种浏览器中使用,并完全按需报告所有控制台数据。无需黑客,只需一行代码即可签出codepen。 像这样创建开

  • 我读过几本教程,也读过@mattt的自述,但我还是搞不懂几件事。 > 在实际API中的正确用法是什么?看起来,如果我将通过为所有API实现 协议来创建一个路由器,那么它将几乎不可读。是否应该为每个endpoint创建一个路由器? 第二个问题很可能是由于缺乏使用Swift语言的经验引起的。我不明白为什么要用 来构建路由器?为什么我们不将类与静态方法一起使用?这里有一个例子(来自Alamofire's

  • 问题内容: 因此,我正在考虑建立一个业余项目,这只是为了完成我的编程/设计。 它基本上是一个多线程的网络蜘蛛,更新了相同的数据结构object-> int。 因此,为此使用数据库绝对是矫kill过正,而我唯一想到的就是用于包含我的数据结构的线程安全单例。http://web.archive.org/web/20121106190537/http://www.ibm.com/developerwor

  • 问题内容: 我试图了解Java 8中API 的方法。 我有简单的逻辑: 但这会导致编译错误: 我当然可以做这样的事情: 但这就像混乱的支票一样。 如果我将代码更改为此: 代码变得越来越脏,这让我想到了回到旧支票。 有任何想法吗? 问题答案: 需要作为参数。您正在向其传递类型为void的表达式。因此,它不会编译。 使用者应被实现为lambda表达式: 甚至更简单,使用方法参考: 这基本上与 想法是仅

  • 问题内容: 我刚刚开始使用BoneCP,并从作者站点中提取了示例JDBC代码。 我有一个名为getConnection()的函数,该函数返回一个片段: 现在,我的问题是:1)使用完上述函数返回的连接后,是否将其返回到池中,还是完全关闭连接,我该调用connection.close()吗?如何将连接返回池? 2)如何在应用程序退出时清理池?我结束时会调用connectionPool.shutdown

  • 问题内容: 我正在尝试了解的语义,以及实体管理器对未保存的瞬态实例的确切含义。我要实现的只是向会话添加一个新的临时实例,并在刷新会话时让Hibernate执行一个。 我发现如果持久保存一个新实例,然后在同一会话中对其进行修改,则实体管理器将同时生成和语句,这可能会导致约束冲突。 例如,假设我有一个带有列 栏 和以下服务方法的实体关系 Foo 。 __ 尽管我们为提供了一个值,但是执行此代码将违反数