code

더 나은 점 : @SuppressLint 또는 @TargetApi?

codestyles 2020. 8. 19. 08:10
반응형

더 나은 점 : @SuppressLint 또는 @TargetApi?


내 앱에 문제가 있으며 StrictMode기본적으로 StrictModeHelper. 그러나 Lint는 setThreadPolicy()지금 에 대해 불평 하고 다음 중 하나를 추가 할 것을 제안합니다.

@SuppressLint 'NewApi'

또는

@TargetApi(Build.VERSION_CODES.GINGERBREAD)

onCreate()보기 이벤트에.

어떤 방법이 선호됩니까 .. 또는 기본적으로 동일한 작업을 수행합니까?


내 앱에 StrictMode에 관한 문제가 있으며 기본적으로 StrictModeHelper를 비활성화하는 코드 스 니펫을 추가했습니다.

네트워킹 버그를 수정하십시오.

어떤 방법이 선호됩니까 .. 또는 기본적으로 동일한 작업을 수행합니까?

@TargetApi@SuppressLint동일한 코어 효과가 : 그들은 린트 오류를 억제.

차이점 @TargetApi은를 사용하면 매개 변수를 통해 코드에서 처리 한 API 수준을 선언하므로 나중에에서 인용 한 API 수준보다 새로운 것을 참조하도록 메서드를 수정하면 오류가 다시 나타날 수 있습니다 @TargetApi.

예를 들어, StrictMode네트워킹 버그에 대한 불만 을 차단하는 대신 AsyncTask최신 버전의 Android에서 직렬화되는 문제를 해결하려고 한다고 가정합니다 . 최신 장치에서 스레드 풀을 선택하고 이전 장치에서 기본 다중 스레드 동작을 사용하는 코드에 다음과 같은 메서드가 있습니다.

  @TargetApi(11)
  static public <T> void executeAsyncTask(AsyncTask<T, ?, ?> task,
                                          T... params) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
      task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
    }
    else {
      task.execute(params);
    }
  }

갖는 @TargetApi(11)것은 Lint가 내 .NET보다 새로운 것을 사용하고 android:minSdkVersion있지만 API 레벨 11까지 사용하고 있음을 감지하면 Lint가 불평하지 않음을 의미합니다. 이 경우 작동합니다. 그러나, 내가 API 레벨 14까지 추가되지 않은 참조 뭔가에이 방법을 변경 한 경우 내 때문에, 다음 린트 오류가 다시 나타납니다 @TargetApi(11)주석이 난 단지 레벨 11 API에 대한 작업에 코드를 고정 있다고하고 아래 위하지 API 레벨 14 이하 .

를 사용하면 내 코드 참조 및 처리하도록 설정된 코드에 관계없이 모든 API 수준에 @SuppressLint('NewApi')대한 Lint 오류가 손실됩니다 .

따라서 @TargetApi는 빌드 도구에 "OK, I fixed this category of issues"를보다 세밀한 방식으로 알릴 수 있으므로 선호되는 주석입니다.

참고 URL : https://stackoverflow.com/questions/14341042/what-is-better-suppresslint-or-targetapi

반응형