Apa cara terbaik untuk melakukan "pengaturan aplikasi" di Android? [Tutup]

108

Saya ingin menyimpan beberapa pengaturan aplikasi (seperti URL API, dan beberapa pengaturan untuk pengujian) untuk aplikasi Android.

Saya kebanyakan bekerja sebagai pengembang .NET , jadi saya terbiasa menggunakan file app.configuntuk tujuan ini. Apa cara yang baik untuk melakukannya di Android?

Tim Almond
sumber

Jawaban:

148

Banyak aplikasi mungkin menyediakan cara untuk menangkap preferensi pengguna pada pengaturan aplikasi atau aktivitas tertentu. Untuk mendukung ini, Android menyediakan satu set API sederhana.

Preferensi biasanya adalah pasangan nilai nama. Mereka dapat disimpan sebagai "Preferensi Bersama" di berbagai aktivitas dalam aplikasi (catatan saat ini tidak dapat dibagikan di seluruh proses). Atau bisa jadi sesuatu yang perlu disimpan khusus untuk suatu aktivitas.

  1. Preferensi Bersama: Preferensi bersama dapat digunakan oleh semua komponen (aktivitas, layanan, dll.) Dari aplikasi.

  2. Preferensi yang ditangani aktivitas: Preferensi ini hanya dapat digunakan dengan dalam aktivitas dan tidak dapat digunakan oleh komponen aplikasi lainnya.

Preferensi Bersama:

Preferensi bersama dikelola dengan bantuan getSharedPreferencesmetode Contextkelas. Preferensi disimpan dalam file default (1) atau Anda dapat menentukan nama file (2) yang akan digunakan untuk merujuk ke preferensi.

(1) Berikut adalah cara Anda mendapatkan instance saat Anda menentukan nama file

public static final String PREF_FILE_NAME = "PrefFile";
   SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATEadalah mode operasi untuk preferensi. Ini adalah mode default dan berarti file yang dibuat akan diakses hanya oleh aplikasi pemanggil. Dua mode lainnya yang didukung adalah MODE_WORLD_READABLEdan MODE_WORLD_WRITEABLE. Di MODE_WORLD_READABLEaplikasi lain dapat membaca file yang dibuat tetapi tidak dapat memodifikasinya. Dalam kasus MODE_WORLD_WRITEABLEaplikasi lain juga memiliki izin menulis untuk file yang dibuat.

(2) Cara yang disarankan adalah menggunakan mode default, tanpa menentukan nama file

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

Terakhir, setelah Anda memiliki instance preferensi, berikut adalah cara mengambil nilai yang disimpan dari preferensi:

 int storedPreference = preferences.getInt("storedInt", 0);

Untuk menyimpan nilai di SharedPreference.Editorobjek file preferensi harus digunakan. Editoradalah antarmuka SharedPreferencekelas yang bersarang .

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

Editor juga mendukung metode seperti remove()dan clear()untuk menghapus nilai preferensi dari file.

Preferensi Aktivitas:

Preferensi bersama dapat digunakan oleh komponen aplikasi lainnya. Tetapi jika Anda tidak perlu berbagi preferensi dengan komponen lain dan ingin memiliki aktivitas preferensi pribadi. Anda dapat melakukannya dengan bantuan getPreferences()metode aktivitas. The getPreferenceMetode menggunakan getSharedPreferences()metode dengan nama kelas aktivitas untuk nama file preferensi.

Berikut adalah kode untuk mendapatkan preferensi

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);

Kode untuk menyimpan nilai juga sama seperti dalam kasus preferensi bersama.

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

Anda juga dapat menggunakan metode lain seperti menyimpan status aktivitas dalam database. Catatan Android juga berisi paket bernama android.preference. Paket mendefinisikan kelas untuk mengimplementasikan UI preferensi aplikasi.

Untuk melihat beberapa contoh lainnya, periksa pos Penyimpanan Data Android di situs pengembang.

Pentium10
sumber
1
Terima kasih. Sepertinya yang perlu saya lakukan adalah menggunakan file XML untuk apa yang saya cari (atau mungkin saya menggunakan XML sebagai data untuk memuat awal), tetapi item preferensi berguna untuk bagian lain dari proyek saya.
Tim Almond
1
Anda dapat menggunakan file xml untuk init. Anda perlu menelepon sesuatu sepertiPreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
Pentium10
3
Panduan ini juga bisa berguna: developer.android.com/guide/topics/ui/settings.html
Hung Tran
1
+1. Hanya satu hal kecil yang perlu diingat. Setelah menyetel nilai dalam preferencesobjek, pemanggilan editor.apply()direkomendasikan editor.commit()karena yang pertama akan menangani penyimpanan di latar belakang.
Anindya Chatterjee
2
Saya agak bingung disini. SharedPreferences adalah untuk menyimpan pengaturan pengguna melalui aplikasi, bukan pengaturan aplikasi. Pengguna (dan saya juga) bertanya-tanya di mana harus menyimpan pengaturan aplikasi, contoh URL API atau pengaturan lain yang digunakan aplikasi untuk bekerja dengan benar.
albanx