Saya memiliki masalah di aplikasi saya terkait StrictMode dan menambahkan cuplikan kode yang pada dasarnya menonaktifkan StrictModeHelper
Harap perbaiki bug jaringan.
Metode mana yang lebih disukai ..atau apakah mereka pada dasarnya melakukan hal yang sama?
@TargetApi
dan @SuppressLint
memiliki efek inti yang sama: mereka menekan error Lint.
Perbedaannya adalah dengan @TargetApi
, Anda mendeklarasikan, melalui parameter, level API apa yang telah Anda atasi dalam kode Anda, sehingga kesalahan dapat muncul lagi jika Anda kemudian mengubah metode untuk mencoba mereferensikan sesuatu yang lebih baru daripada level API yang disebutkan di @TargetApi
.
Sebagai contoh, anggap saja, alih-alih memblokir StrictMode
keluhan tentang bug jaringan Anda, Anda mencoba untuk mengatasi masalah AsyncTask
serialisasi pada versi Android yang lebih baru. Anda memiliki metode seperti ini di kode Anda untuk ikut serta ke kumpulan utas pada perangkat yang lebih baru dan menggunakan perilaku multithread default pada perangkat yang lebih lama:
@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);
}
}
Memiliki @TargetApi(11)
artinya jika Lint mendeteksi bahwa saya menggunakan sesuatu yang lebih baru dari milik saya android:minSdkVersion
, namun hingga API Level 11, Lint tidak akan mengeluh. Dalam hal ini, itu berhasil. Namun, jika saya memodifikasi metode ini untuk mereferensikan sesuatu yang tidak ditambahkan hingga API Level 14, maka kesalahan Lint akan muncul lagi, karena @TargetApi(11)
anotasi saya mengatakan bahwa saya hanya memperbaiki kode agar berfungsi pada API Level 11 dan di bawahnya , bukan API Level 14 ke bawah .
Dengan menggunakan @SuppressLint('NewApi')
, saya akan kehilangan kesalahan Lint untuk level API apa pun , terlepas dari apa referensi kode saya dan apa yang kode saya siapkan untuk ditangani.
Karenanya, @TargetApi
adalah anotasi yang disukai, karena memungkinkan Anda memberi tahu alat pembuat "OK, saya memperbaiki kategori masalah ini" dengan cara yang lebih terperinci.