[解決済み] どっちがいい?SuppressLintと@TargetApiのどちらが良いですか?
質問
私のアプリでは、次のような問題があります。
StrictMode
を基本的に無効にするコードスニペットを追加しました。
StrictModeHelper
. しかし、Lintは
setThreadPolicy()
を追加するよう提案します。
@SuppressLint 'NewApi'
または
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
を
onCreate()
イベントに追加します。
どの方法が好ましいですか ...それとも、基本的に同じことをするのでしょうか?
どのように解決するのですか?
<ブロッククオート私のアプリでは StrictMode に関する問題があり、基本的に StrictModeHelper を無効にするコード スニペットを追加しました。
ネットワークに関するバグを修正してください。
<ブロッククオートどの方法が好ましいのでしょうか。それとも、基本的に同じ方法なのでしょうか。
@TargetApi
そして
@SuppressLint
は同じ核心的な効果を持っています: これらはLintエラーを抑制します。
違いは
@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 が私の書いた
android:minSdkVersion
よりも新しいが、API Level 11までのものを使っていることを検知しても、Lintは文句を言いません。この場合、それはうまくいきます。しかし、このメソッドを修正してAPI Level 14まで追加されていないものを参照するようにした場合、Lintのエラーは再び表示されます。
@TargetApi(11)
アノテーションによると、API Level 11 で動作するようにコードを修正しただけであり、API Level 14 で動作するようにコードを修正したのは
以下
上で動作するように修正しただけで、API Level 14 と
の下にある
よりも上です。
使用方法
@SuppressLint('NewApi')
の Lint エラーをなくすことができます。
任意の
API レベルで、私のコードが何を参照しているか、私のコードが何を処理するように設定されているかに関係なく、Lint エラーを失います。
したがって
@TargetApi
は、ビルドツールに「OK、この問題のカテゴリを修正しました」と、よりきめ細かく伝えることができるため、好ましいアノテーションと言えます。
関連
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] Linting(リンティング)とは?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み】LogCatメッセージ。Google Play サービスのリソースが見つかりませんでした。プロジェクトの構成を確認し、リソースが含まれていることを確認してください。
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 呼び出しにはAPIレベル11が必要です(現在の最小値は8) android.app.Activity#onCreateView
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] 通知をクリックした後にアプリケーションを開く
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] アンドロイドボタンセレクター