Что лучше: @SuppressLint или @TargetApi?

У меня есть проблемы в моем приложении относительно StrictMode и добавлен фрагмент кода, который в основном отключает StrictModeHelper . Тем не менее, Lint жалуется на setThreadPolicy() сейчас и предлагает либо добавить

 @SuppressLint 'NewApi' 

или

 @TargetApi(Build.VERSION_CODES.GINGERBREAD) 

К onCreate() представления.

Какой метод предпочтительнее .. или они в основном делают то же самое?

У меня есть проблемы в моем приложении относительно StrictMode и добавлен фрагмент кода, который в основном отключает StrictModeHelper

Исправьте сетевую ошибку.

Какой метод предпочтительнее .. или они в основном делают то же самое?

@TargetApi и @SuppressLint имеют @TargetApi и тот же основной эффект: они подавляют ошибку Lint.

Разница заключается в том, что с помощью @TargetApi вы объявляете через параметр какой уровень API, который вы @TargetApi в своем коде, чтобы ошибка снова появилась, если позже вы измените метод, чтобы попытаться ссылаться на нечто более новое, чем уровень API, приведенный в @TargetApi .

Например, предположим, что вместо того, чтобы блокировать жалобы StrictMode о вашей сетевой ошибке, вы пытались обойти проблему, AsyncTask сериализацией 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 обнаруживает, что я использую что-то более новое, чем мой android:minSdkVersion , но до уровня API 11, Lint не будет жаловаться. В этом случае это работает. Если, однако, я изменил этот метод, чтобы ссылаться на то, что не было добавлено до уровня API 14, тогда ошибка Lint появится снова, потому что в моей @TargetApi(11) говорится, что я только исправил код для работы на уровне API 11 И ниже , а не уровня API 14 и ниже .

Используя @SuppressLint('NewApi') , я бы потерял ошибку Lint для любого уровня API, независимо от того, что мой код ссылается и что мой код настроен для обработки.

Следовательно, @TargetApi является предпочтительной аннотацией, поскольку она позволяет вам рассказать инструменты сборки «Хорошо, я исправил эту категорию проблем» более тонко.

Intereting Posts
Ошибка AdMob «Недостаточно места для показа рекламы» Android parse JSONObject Android FileReader от R.raw.file Входящие в Google, такие как функция RecyclerView, открытая анимация В чем разница между классом -keep и -dontwarn Can not получить MD5 Отпечаток сертификата SDK отладки Активность андроидного контента неэффективное исключение. Не было обнаружено никакой активности для обработки намерения – при попытке перейти к URL-адресу Интегрируйте dropbox в мое приложение, которое показывает предупреждение безопасности Сделайте ячейки одинаковыми по ширине и высоте, чтобы заполнить таблицу Android Webview не может сосредоточиться на своих элементах Как избежать скрытия (или отклонения) AlertDialog при нажатии кнопки NeutralButton? Измените значок строки состояния push-сообщения на Android и IOS Пользовательское название AlertDialog имеет черную границу Почему Android не использует больше перечислений? Android Google Maps API V2 центральные маркеры