Tenho problemas em meu aplicativo em relação a StrictMode e adicionei o snippet de código que basicamente desativa o StrictModeHelper
Corrija o bug da rede.
Qual método é preferido ... ou eles estão basicamente fazendo o mesmo?
@TargetApi
e @SuppressLint
têm o mesmo efeito principal: eles suprimem o erro de Lint.
A diferença é que com @TargetApi
, você declara, por meio do parâmetro, qual nível de API você endereçou em seu código, para que o erro possa aparecer novamente se você modificar o método posteriormente para tentar fazer referência a algo mais recente que o nível de API citado em @TargetApi
.
Por exemplo, suponha que, em vez de bloquear as StrictMode
reclamações sobre o bug da rede, você esteja tentando contornar o problema de AsyncTask
ser serializado em versões mais recentes do Android. Você tem um método como este em seu código para optar pelo pool de threads em dispositivos mais novos e usar o comportamento multithread padrão em dispositivos mais antigos:
@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);
}
}
Ter @TargetApi(11)
significa que se o Lint detectar que estou usando algo mais novo que o meu android:minSdkVersion
, mas até o nível 11 da API, o Lint não reclamará. Nesse caso, isso funciona. Se, no entanto, eu modifiquei este método para fazer referência a algo que não foi adicionado até a API de nível 14, então o erro de Lint iria aparecer novamente, porque minha @TargetApi(11)
anotação diz que eu só corrigi o código para funcionar na API de nível 11 e abaixo , não API nível 14 e abaixo acima.
Usando @SuppressLint('NewApi')
, eu perderia o erro do Lint para qualquer nível de API, independentemente das referências do meu código e para o que meu código está configurado para lidar.
Conseqüentemente, @TargetApi
é a anotação preferida, pois permite que você diga às ferramentas de construção "OK, corrigi esta categoria de problemas" de uma forma mais refinada.