2016-04-14 34 views
2

Benim android uygulamasında, ekleme, silme, kayıt güncelleme gibi SQlite DB işlemleri yapıyorum. i gibi aşağıda yaparsam, bilmek istiyorum:Sqlite Ekle, Sil, Senkronize android

long t1 = System.currentTimeMillis(); 
for(i =0; i<N; i++) 
{ 
    insertRecord(); 
} 
long t2 = System.currentTimeMillis(); 

t2 t1 DB N kayıtları eklemek için gerekli süreyi eşit olacaktır gelmez. Senkronize veya senkronize olmayan eklemek için çağrıdır. yürütmeye ilk insert yürütmek gerektiğini Öte yandan ardı ardına eklemek çünkü

+0

onlar senkronize! –

cevap

1

çözmek için AsyncTask kullanabilirsiniz

işlem, veri aslında işlem bittiğinde yazılır ve senkronize edilir.

Açık işlem kullanmıyorsanız, her şey insert() numaralı çağrı içinde gerçekleşir ve gerçekten istediğiniz şeyi ölçeceksiniz. Ancak, bu gibi işlemler örtülü bir işlemle çalıştırılır, bu da onları oldukça yavaş hale getirir (çünkü senkronizasyon ek yükü her komut için vardır).

ilgili çeşitli veritabanı işlemleri yapıyoruz zaman, tek bir işlem haline hepsini koymak gerekir:

long t1 = System.currentTimeMillis(); 

db.beginTransaction(); 
try { 
    for(i =0; i<N; i++) { 
     insertRecord(); 
    } 
    db.setTransactionSuccessful(); 
} finally { 
    db.endTransaction(); 
} 

long t2 = System.currentTimeMillis(); 
+0

InsertRecord() içinde, tüm kayıtlar için DB'ye sorguladım. Sonra bazı hesaplamalar yapın. Ve bu kalibrasyona dayanarak, kaydı DB'ye ekliyorum. Nihayet engellendiğinde bu ortalama yürütülürse, her şey DB'ye yazılır, değil mi? –

+0

DB'nin daha önce bellekte kalması ve bir şeyler yazması gerekiyor olabilir. Ancak, sadece işlemin bitiminden sonra, her şeyin yazıldığı garanti edilir. –

0

bu senkron insert ikinci bir sen aynı zamanda bir iç iseniz takın Speed ​​Problem

-1

Eğer birden fazla yerden bu REZİL yöntemleri aradığınız, eğer bu yöntemleri yapmak daha iyidir Kilitleme ve istisna alma önlemek için senkronize.