Sobes.tech
Junior

Android uygulamalarında hangi veri depolama türleri vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

  1. 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.
  2. 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.
  3. 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.
  4. SQLite Veritabanları:

    • İlişkisel veritabanı.
    • Yapılandırılmış verilerin depolanması için uygundur.
    • Veri manipülasyonu için SQL sorguları kullanılabilir.
  5. İç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.
  6. 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)