2014-09-10 24 views
5

Uygulamamda birden fazla işlem var ve her işlemde aynı SQLite veritabanına erişmem gerekiyor (elbette, 2'den fazla yol demektir), bu yüzden endişeleniyorum SQLite hakkında sadece iplik güvenliği hakkında değil, aynı zamanda proses güvenliği hakkında.Android Hakkında Çok işlemli durumda Sqlite güvenliği

Bu dava için bir çözüm using content-provider'dur. Ama android sdk'den, it warns that its methods may be called from multiple threads and therefore must be thread-safe. İçerik sağlayıcının kendisi zorunlu olarak diş güvenli olduğu anlamına gelmezse, sürecin güvenli olduğunu nasıl söyleyebilirim?

Ayrıca, article, SQLiteDatabase'in varsayılan olarak eşzamanlı olduğunu ve böylece iki iş parçacığının aynı anda dokunmayacağını garanti eder. Çok işlemli durumda ne olur? İki işlem aynı tabloyu aynı anda değiştirebilir mi? Bu çökecek mi? Ben googling sonra herhangi bir cevap alamadım.

+0

hayır, yapamazlar. SQLiteDatabaseLockedException – orium

cevap

2

Birden çok işlem, birden çok iş parçacığı gibi davranır, yani, birbirleriyle etkileşime girme güvenlidir.

+1

alırsınız Ancak iki işlemle aslında 2 SQLiteDatabase örneğini alabilirim, iş parçacığı veya işlem güvenliği ile ilgili olası sorunlara neden olur mu? – mianlaoshu

+0

Farklı işlemlerin farklı adres alanları vardır; iki nesne birbirini bile göremez. (Sadece DB dosyasındaki kilidi görüyorlar.) –

+0

Evet, bunu biliyorum. Yani, SQLite veritabanı kilidi tüm sistem için global olmalı, eğer bir uygulama kilidi alırsa, DB'ye erişirse başka bir işlemde başka bir uygulama "kilitli" duruma geçmelidir, doğru mu? – mianlaoshu