java 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 는 이것이 디버그 플래그에 대한 지원을 깨뜨리는 특별한 이유, 즉 기본적으로이 사용 사례 (h / t @auselen)에 대해 "연결할 수없는 코드"가 트리거되지 않는다고 지적합니다. ( static final boolean DEBUG = false; 를 들면).

if 에 대해서는 while 을 교체하여 좀 더 모호한 유스 케이스를 생성했습니다. Eclipse와 같이이 동작을 사용하여 IDE를 이동할 수 있다고 생각 하지만,이 편집은 향후 4 년입니다. Eclipse 환경을 사용할 필요가 없습니다.

java android usermanager

Android 4.2에 도입 된 새로운 API를보고있었습니다. UserManager 클래스를 살펴보면서 다음과 같은 메서드를 발견했습니다.

public boolean isUserAGoat()

이 통화를하는 사용자가 순간 이동의 대상인지 여부를 결정하는 데 사용됩니다.

이 호출을 한 사용자가 염소인지 여부를 반환합니다.

언제 어떻게 사용해야합니까?




이런 식으로 @djechlin answer 보완하면 (자), 특정의 반복이나 특정의 재귀 호출을 정지하고 싶은 경우,이 함수 호출을 더미 코드로서 IDE에 보관 유지하는 일도 가능 합니다. 예를 들면 다음과 같습니다.

IDE에 경고로 표시되는 더미 변수 선언 대신 isUserAGoat() 사용할 수 있습니다. Eclipse에서는 특별한 경우 브레이크 포인트 표시가 막히므로이를 활성화 / 비활성화 할 수 없습니다. 이 방법을 규칙으로 사용하면 모든 호출을 나중에 일부 스크립트 (커밋 단계 중 어쩌면?)로 필터링 할 수 있습니다.

Google 사람들은 무거운 이클립스 사용자입니다 (그들은 Eclipse 플러그인으로 Android 플러그인, 즉 Android SDK, GAE 등 여러 프로젝트를 제공합니다). 따라서 @djechlin 응답과이 보완적인 대답이 많은 의미가 있습니다.




음성 인식 분야에서 사용자는 염소 으로 구분됩니다.

예를 들어, 여기 89 페이지 :

양들은 음성 인식이 매우 잘 작동하는 사람들이며, 염소는 예외적으로 저조한 사람들입니다. 음성 인식기 만이 구분자를 구분합니다. 사람들은 누구의 목소리가 쉽게 인식되고 누구의 목소리가 아닌지 예측할 수 없습니다. 가장 좋은 정책은 모든 종류의 환경에서 모든 종류의 음성을 처리 할 수 ​​있도록 인터페이스를 설계하는 것입니다

어쩌면 안드로이드 사용자를 미래의 염소로 표시하여 염소 요구에 맞게 음성 인식 엔진을 구성 할 계획 일 것입니다. ;-)




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 를 반환 한 것은 이제 무작위로 보이는 값을 반환합니다. 코드에서 충분히 깊숙이 묻혀 있으면 새로운 버그가 어디에서 왔는지 파악하는 시간이 오래 걸릴 수 있습니다.

결론 : 메소드의 구현을 제어하지 않고 API 문서에 명시된 용도 이외의 용도로 사용하기로 결정했다면 문제가 될 수 있습니다.




행성의 가장 먼 산에서, 우리 인간과 마찬가지로 현재 휴대 전화를 사용할 수있는 고급 염소 종이 있습니다!

유출 된 영상 : youtu.be/YJwZMUn7GdQ

Google은 기술 진보의 최전선에 머물기 위해이를 발견하고 지원을 제공하기로 결정했습니다.




아래 소스 코드를 참조하십시오.

/**
 * 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