2012-07-09 13 views
13

Android'de SQLiteDatabase.CursorFactory'u nasıl kullanacağını bilen var mı? Ben birkaç WHERE yan tümce ifadeleri istemi önce programlı olarak değiştirilebilen parametreleri kullandığı bir SQL SELECT deyimini kullanan kalıcı bir SQLiteCursor nesnesi elde etmek istiyorum. ÖrneğinSQLiteDatabase.CursorFactory nasıl kullanılır

:

SELECT LocationID FROM Locations WHERE Latitude < northlimit AND Latitude > southlimit AND Longitude < eastlimit AND Longitude > westlimit; 

Sınır parametreleri bir kez her 200 ms

Ben sadece SQLiteDatabase.rawQuery("SELECT ..."); sistemi kullanıyorsanız bu sayede bir sorunu çözmek için çalışıyorum, dinamik değişecek her yeni sorgu için yeni bir CursorWindow yaratır Nihayetinde bellek tükeniyor. Bu yüzden sistemi yeni CursorWindows oluşturmaya zorlamak için bir yol bulmaya çalışıyorum.

+0

Yeniden sorgulamadan önce eski imleci kapatmalısınız. Bu şekilde hafızanız bitmemelidir. Bildiğim kadarıyla SQLite, sorgu sonuç kümelerinde rasgele sıra erişimini desteklemiyor. Sadece bir SQLite sonucunu baştan sona yineleyebilirsiniz. Android çerçevesi, rastgele erişime izin vermek için tüm sonucu bir imlecin içine yükleyerek bu sorun etrafında çalışır. Sorgunuz çok fazla satır (veya bir çok veri) döndürürse, aynı zamanda hafıza dışında bir duruma da girebilirsiniz. – tiguchi

cevap

0
myCursor.close(); 
myDataBaseHelp.close(); 

Ve veri ayıkladıktan sonra kapatmayı unutmayın!

1

Gayet .. onun toplamı o kadar bu öğretici kontrol edebilirsiniz:

http://www.youtube.com/watch?v=j-IV87qQ00M

ve herhangi kullanımdan sonra, DB kapanmalı .. başka bir yolu Sınıf değişken İmleç cr yaratmaktır ve bunu kullanmak her zaman bu kontrol edin: if (cr == null) cr = new .... başka // şey yapmak //

cr.close();