Android SQLite Yakın Zaman DB
Android SQLite veritabanı ile çalışıyorum. Veritabanı yöneticisi bir singleton ve şu anda başlatıldığında veritabanı bağlantısı açar. Güvenli veritabanı birisi benim sınıf veritabanı ile çalışmak için aradığında zaten açık olduğu tüm süre boyunca açık bırakmak değil mi? Ya ben ve veritabanı önce açıp kapatın ve her bir erişim ihtiyaç vardır. Sadece onu her zaman açık bırakarak bir zararı olur mu?
Teşekkürler!
CEVAP
her zaman açık, ve onStop
onDestroy
gibi bazı yaşam döngüsü yöntemi kimseye söylemem. bu şekilde, kolayca eğer veritabanı zaten kullanmadan önce SQLiteDatabase
tek bir nesne üzerinde isDbLockedByCurrentThread
isDbLockedByOtherThreads
her zaman arayarak kullanımda olup olmadığını kontrol edebilirsiniz. bu veritabanı için birden çok manipülasyonları engellemek ve olası bir kazadan uygulama kurtaracak
eğer singleton, böyle bir yöntem SQLiteOpenHelper
Tek bir nesne almak zorunda.
private SQLiteDatabase db;
private MyDBOpenHelper mySingletonHelperField;
public MyDBOpenHelper getDbHelper() {
db = mySingletonHelperField.getDatabase();//returns the already created database object in my MyDBOpenHelper class(which extends `SQLiteOpenHelper`)
while(db.isDbLockedByCurrentThread() || db.isDbLockedByOtherThreads()) {
//db is locked, keep looping
}
return mySingletonHelperField;
}
açık yardımcınız nesne kullanmak istediğiniz zaman, bu alıcı yöntem(dişli olduğundan emin olun) diyoruz
tek bir yöntem olabilir(alıcı yukarıdaki aramak için denemeden önce HER ZAMAN " adında bir film
public void setDbHelper(MyDBOpenHelper mySingletonHelperField) {
if(null == this.mySingletonHelperField) {
this.mySingletonHelperField = mySingletonHelperField;
this.mySingletonHelperField.setDb(this.mySingletonHelperField.getWritableDatabase());//creates and sets the database object in the MyDBOpenHelper class
}
}
tekil veritabanı olarak kapatmak isteyebilirsiniz:
public void finalize() throws Throwable {
if(null != mySingletonHelperField)
mySingletonHelperField.close();
if(null != db)
db.close();
super.finalize();
}
eğer uygulamanızın kullanıcıların veritabanı etkileşimleri çok hızlı bir şekilde oluşturmak için yeteneği varsa, yukarıda gösterdiğim gibi bir şey kullanmak gerekir. ama eğer az veritabanı etkileşimleri varsa, bu konuda endişelenmenize gerek, ve sadece oluşturmak ve veritabanını KAPATIN Her zaman olmaz.
Yakın/Android Klavyeyi gizlemek...
Android hata: *yüklemek Başarısız oldu...
Şimdiki zaman almak ve Android tarih...
Android SQLite için en iyi uygulamalar...
Nasıl Android üzerinde internet erişim...