code

@SuppressLint 또는 @TargetApi 중 더 나은 것은 무엇입니까?

starcafe 2023. 4. 28. 21:13
반응형

@SuppressLint 또는 @TargetApi 중 더 나은 것은 무엇입니까?

내 앱에 다음과 관련된 문제가 있습니다.StrictMode그리고 기본적으로 그것을 비활성화하는 코드 스니펫을 추가했습니다.StrictModeHelper그러나 린트는 다음과 같은 불만을 제기합니다.setThreadPolicy()지금 그리고 추가할 것을 제안합니다.

@SuppressLint 'NewApi'

또는

@TargetApi(Build.VERSION_CODES.GINGERBREAD)

에게onCreate()경치의 사건.

어느 방법이 선호됩니까? ..아니면 기본적으로 같은 방법을 사용하고 있습니까?

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

네트워킹 버그를 수정해 주세요.

어느 방법이 선호됩니까? ..아니면 기본적으로 같은 방법을 사용하고 있습니까?

@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)즉, 린트가 내 것보다 더 새로운 것을 사용하는 것을 감지하면android:minSdkVersion하지만 API 레벨 11까지는 린트가 불평하지 않을 것입니다.이 경우에는 효과가 있습니다.하지만 API 레벨 14까지 추가되지 않은 것을 참조하도록 이 방법을 수정하면 린트 오류가 다시 나타날 것입니다. 왜냐하면,@TargetApi(11)주석에 따르면 API 레벨 11에서 작동하도록 코드만 수정했습니다. 아래에 위, API 레벨 14가 아닌 아래에 위의

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

이런 이유로,@TargetApi기본 주석으로, 빌드 도구에 "좋아요, 문제 범주를 수정했습니다"라는 메시지를 보다 세분화된 방식으로 표시할 수 있습니다.

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

반응형