Saya sedang mengembangkan aplikasi android yang menggunakan layanan web untuk mendapatkan data dari server, untuk itu saya memiliki tiga kumpulan URL yang berbeda untuk mengarahkan sistem pengembangan, server pengujian, dan server langsung. Sulit untuk mengubah URL setiap kali saya ingin memberikan aplikasi untuk pengujian / live. jadi saya berencana membuatnya sebagai dapat dikonfigurasi, sehingga aplikasi bisa mendapatkan URL yang sesuai berdasarkan saya membangun jenis konfigurasi konstan. Begitu,
- yang merupakan cara terbaik untuk menjaga konstanta ini, kelas statis java atau antarmuka publik java atau file sumber daya xml.? Kapan? Mengapa?
- mana yang memberikan kinerja lebih baik ?, Kapan? Mengapa?
Contoh: sumber daya xml
<integer name="config_build_type">0</integer>
<string-array name="url_authentication">
<item >http://development.com/xxxx</item>
<item >http://test.com/xxx</item>
<item >http://example.com/xxx</item>
</string-array>
Konstanta statis Java
public class Config {
public static final int BUILD_TYPE = 0; // 0 - development, 1 - test, 2 - live
public static final String[] URL_AUTHENTICATION = {"http://development.com/", "http://test.com/", "http://example.com"};
}
android
xml
configuration
constants
static-members
Jayabal
sumber
sumber
Jawaban:
Ada perbedaan besar di antara keduanya karena Anda dapat merujuk sumber daya proyek dalam tata letak XML Anda. Mereka tersedia dalam konteks aplikasi dan oleh karena itu dapat diakses di seluruh aplikasi global. Keuntungan terbesar menggunakan sumber daya proyek adalah kemudahan akses dan memungkinkan Anda mengatur proyek secara signifikan.
static final
konstanta dikompilasi ke dalam bytecode java; sumber daya proyek dikompilasi ke dalam format biner dalam apk. Mengakses keduanya sangat efisien ... jika ada perbedaan di antara keduanya, paling tidak itu sepele.Tidak ada aturan yang ditetapkan tentang bagaimana Anda harus menggunakan sumber daya / konstanta dalam proyek Anda. Karena itu, saya pribadi menggunakan sumber daya untuk nilai yang mungkin perlu saya gunakan dalam kode XML atau java saya. Di sisi lain, saya biasanya menggunakan
static final
konstanta untuk nilai yang hanya akan digunakan oleh kode java saya dan khusus untuk implementasi saya.Perhatikan juga bahwa dimungkinkan untuk memuat sumber daya XML pada waktu proses tergantung pada konfigurasi perangkat saat ini (yaitu ukuran layar, lokal, dll.). Jadi, Anda harus mempertimbangkan hal ini saat memutuskan apakah Anda harus mendeklarasikan konstanta dalam XML atau langsung di
.java
file Anda .sumber
Untuk orang-orang yang ingin melihat bagaimana kita dapat menggunakan Kelas untuk mendefinisikan konstanta kita dan memanggil apapun yang kita butuhkan.
Sekarang kita bisa menggunakan konstanta di atas dengan cara berikut.
sumber
Secara umum:
sumber
Itu selalu merupakan praktik yang baik untuk mengekstrak string UI dari kode aplikasi Anda dan menyimpannya di file eksternal. Android mempermudah ini dengan direktori resource di setiap project Android.
sumber
Saya pikir kedua cara tampaknya baik tetapi hal itu tergantung pada kebutuhan Anda.
Jika Anda memiliki nilai Anda (tautan layanan web) dalam XML Anda dan anggap ada perubahan dalam nilai Anda (tautan layanan web), Anda dapat dengan mudah mengubah hanya dalam file XML.
Tetapi jika Anda menggunakan kelas di dalam sebagai variabel statis, Anda harus mengubah semua file kelas.
Jadi saran saya adalah pisahkan konstanta dari file sumber dan masukkan ke sumber daya dan akses ..
sumber
Saya senang seseorang menanyakan ini ... plus satu!
Sumber daya proyek memerlukan akses ke Konteks, yang tidak tersedia dalam metode statis (kecuali Anda meneruskannya di dll.), Tetapi selalu tersedia di Aktivitas - tampaknya ada koneksi preferensial antara sumber daya dan tata letak. Untuk variabel dan konstanta aplikasi yang dapat diproses dalam metode statis, saya membuat kelas abstrak dan melakukan impor statis (dari kelas konstanta ini) di semua file kelas proyek lainnya.
PVS
sumber