더 나은 점 : @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
'code' 카테고리의 다른 글
다른 프로필이 활성화 된 경우에도 activeByDefault 인 Maven 프로필을 활성 상태로 유지하는 방법은 무엇입니까? (0) | 2020.08.19 |
---|---|
SQL Server에서 group_concat을 사용하여 쿼리를 만드는 방법 (0) | 2020.08.19 |
메서드 선언은 PHP의 부모 메서드와 호환되어야합니다. (0) | 2020.08.19 |
GIT에서 2 개의 분기를 병합 (0) | 2020.08.19 |
xmlns =“…”없이 객체를 XML로 직렬화하는 방법은 무엇입니까? (0) | 2020.08.19 |