java - android多用户 适用于Android UserManager.isUserAGoat()的用例?



6 Answers

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

我替换了if ,产生了一个更加模糊的用例。 我相信你可以通过这种行为来引导你的IDE,比如Eclipse,但是这个编辑是未来4年,我没有Eclipse环境可以使用。

android获取当前用户

我正在研究Android 4.2中引入的新API。 在查看UserManager类时,我遇到了以下方法:

public boolean isUserAGoat()

用于确定进行此呼叫的用户是否受传送的影响。

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

应该如何以及何时使用?




补充@djechlin answer (顺便说一下好的答案!),当你​​想在某个特定的迭代或特定的递归调用中停止时,这个函数调用也可以用作伪代码来在IDE中保存断点,例如:

可以使用isUserAGoat()代替虚拟变量声明,该声明将在IDE中显示为警告,并且在Eclipse特定情况下,将阻塞断点标记,从而难以启用/禁用它。 如果该方法用作约定,则稍后可以通过某些脚本过滤所有调用(在提交阶段可能?)。

谷歌人是沉重的Eclipse用户(他们提供了几个项目作为Eclipse插件:Android SDK,GAE等),所以@djechlin答案和这个补充答案很有意义(至少对我而言)。




在语音识别学科中,用户分为山羊绵羊

例如,请参见第89页

绵羊是语音识别非常好的人,山羊是非常糟糕的人。 只有语音识别器知道它们之间的区别。 人们无法预测谁的声音将被轻易识别,谁的声音不会被识别。 最好的策略是设计界面,以便它可以处理各种环境中的各种声音

也许,计划在未来将Android用户标记为山羊,以便能够配置语音识别引擎以满足山羊的需求。 ;-)




从API 21(第一个Android 5.0 / Lollipop SDK)开始 ,它会检测是否安装了Goat Simulator应用程序:

/**
 * 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文档中未说明的目的,那么您将遇到麻烦。




在这个星球上最偏远的山脉中,有一种先进的山羊种类,它们似乎能够像我们人类一样使用手机!

泄露的镜头: youtu.be/YJwZMUn7GdQ

谷歌必须已经发现了这一点,并决定为他们提供支持,试图保持技术进步的前沿。




请参阅以下源代码:

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



Related