Junior
Android uygulamalarında hangi veri depolama türleri vardır?
sobes.tech yapay zeka
AI'dan gelen yanıt
-
Dahili Depolama:
- Sadece dosyayı oluşturan uygulama tarafından erişilebilir.
- Dosyalar uygulama kaldırıldığında silinir.
- Uygulamanın gizli verilerini depolamak için uygundur.
-
Harici Depolama:
- Tüm uygulamalar tarafından erişilebilir (izinler istendikten sonra).
- Dosyalar uygulama kaldırıldıktan sonra bile kalır.
- Fotoğraf veya müzik gibi ortak verilerin depolanması için uygundur.
-
Paylaşılan Tercihler:
- Anahtar-değer formatında küçük veri hacimleri depolar.
- Uygulama ayarlarını veya kullanıcı tercihlerini kaydetmek için kullanılır.
- Veriler XML dosyasında saklanır.
-
SQLite Veritabanları:
- İlişkisel veritabanı.
- Yapılandırılmış verilerin depolanması için uygundur.
- Veri manipülasyonu için SQL sorguları kullanılabilir.
-
İçerik Sağlayıcılar:
- Uygulamalar arasında veri erişimi için standartlaştırılmış bir arayüz sağlar.
- Kişiler veya takvim gibi verilerin paylaşımı için kullanılır.
- Diğer bileşenlerden uygulama verilerine erişmek için kullanılabilir.
-
Jetpack DataStore:
- Paylaşılan Tercihlerin yerini alır.
- Veri depolama için asenkron API sağlar.
- Veri tiplemesini ve hata yönetimini destekler.
İşte Paylaşılan Tercihlerin kullanımıyla ilgili bir örnek:
// SharedPreferences nesnesini alıyoruz
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
// Değer kaydet
putBoolean("is_first_run", false)
apply() // Değişiklikleri asenkron olarak uygula
}
// Değeri oku
val isFirstRun = sharedPref.getBoolean("is_first_run", true)
İşte SQLite kullanımıyla ilgili bir örnek:
// Veritabanı ve tablo oluşturma
class DBHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
companion object {
const val DATABASE_VERSION = 1
const val DATABASE_NAME = "MyDatabase.db"
const val TABLE_NAME = "my_table"
const val COLUMN_ID = "_id"
const val COLUMN_NAME = "name"
}
override fun onCreate(db: SQLiteDatabase) {
val createTable = "CREATE TABLE $TABLE_NAME (" +
"$COLUMN_ID INTEGER PRIMARY KEY," +
"$COLUMN_NAME TEXT)"
db.execSQL(createTable)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
// Veritabanını güncelleme mantığı
}
}
// Veri ekleme
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase
val values = ContentValues().apply {
put(DBHelper.COLUMN_NAME, "Örnek isim")
}
val newRowId = db.insert(DBHelper.TABLE_NAME, null, values)