StrictMode に関してアプリに問題があり、基本的に StrictModeHelper を無効にするコード スニペットを追加しました
ネットワークのバグを修正してください。
どちらの方法が優先されますか..または基本的に同じことをしていますか?
@TargetApi
同じコア効果があり@SuppressLint
ます。Lint エラーを抑制します。
違いは、@TargetApi
では、コードで対処した API レベルをパラメーターを介して宣言するため、後でメソッドを変更して で引用されている API レベルよりも新しいものを参照しようとすると、エラーが再び表示される可能性があることです@TargetApi
。
たとえば、ネットワーク バグに関する苦情をブロックする代わりに、新しいバージョンの Android でシリアル化されるStrictMode
問題を回避しようとしていたとします。AsyncTask
新しいデバイスでスレッド プールを選択し、古いデバイスでデフォルトのマルチスレッド動作を使用するために、コードに次のようなメソッドがあります。
@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);
}
}
持つということは、Lint が API レベル 11 まで@TargetApi(11)
の新しいものを使用していることを検出した場合android:minSdkVersion
、Lint は文句を言わないということです。この場合、それは機能します。ただし、API レベル 14 まで追加されなかったものを参照するようにこのメソッドを変更した場合、Lint エラーが再び表示されます。これは、API レベル 11 以降で動作するように@TargetApi(11)
コードを修正しただけで、API レベル 11以下でのみ動作するように修正したことが注釈に示されているためです。 API レベル 14以下。
を使用すると、コードが参照するものやコードが処理するように設定されているものに関係なく、API レベルの@SuppressLint('NewApi')
Lint エラーが失われます。
したがって、@TargetApi
ビルド ツールに「OK、このカテゴリの問題を修正しました」とよりきめ細かく伝えることができるため、推奨されるアノテーションです。