2017-10-15 103 views
0

這段代碼讀出我的sqlite表的所有entrys並將它們放入一個列表中。我試着減少線程的加載時間,並在返回我的列表之前檢查所有這些加載完成join()。但是如果我像Threads那樣查詢一些信息,我會得到一些信息。SQLite減少for循環的時間

public ArrayList<ModelTura_spieler> getAllTura_spieler() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    final ArrayList<ModelTura_spieler> tura_spielerList = new ArrayList<ModelTura_spieler>(); 
    String selectQuery = "SELECT * FROM tura_spieler"; 
    final Cursor c = db.rawQuery(selectQuery, null); 

     for(c.moveToFirst(); c.getPosition()!=getTura_spielerCount()-1 ; c.moveToNext()){ 
        ModelTura_spieler tura_spieler = getModelTura_spielerFromCursor(c); 
        tura_spielerList.add(tura_spieler); 
       } 
    return tura_spielerList; 
} 

如何減少這個for循環與線程的查詢時間?

回答

0

你不能。

Sqlite不是線程安全的,這意味着您的SQLiteHelper默認鎖定您的數據庫。

原因是,您一次只能通過一個連接/事務進行訪問。

定義你想抓住,使其稍快使用領域:

SELECT field1,field2,anotherfield FROM tura_spieler 

您可能還需要有一個index這提高你的速度以及。

如果你想查詢字段的基礎上你想加入他們的其他人。

如果找你新的Android和SQLite的,你應該看看到名爲Room一個新的Android庫,它提供了一個簡單易用的paging library