2017-10-15 3 views
0

이 코드는 sqlite 테이블의 모든 항목을 읽고 목록에 넣습니다. 스레드 로딩 시간을 줄이고 목록을 반환하기 전에 join()으로 끝나는 모든 항목을 검사하려고했습니다. 그러나 내가 쓰레기처럼 querys를한다면 나는 두 번 항목을 얻는다.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는 Thread-Safe가 아니므로 SQLiteHelper가 기본적으로 데이터베이스를 잠그는 것을 의미합니다.

이유는 한 번에 하나의 연결/트랜잭션으로만 액세스 할 수 있기 때문입니다.

은 사용 약간 빨리를 만들기 위해 잡아하려는 필드를 정의 :

SELECT field1,field2,anotherfield FROM tura_spieler 

당신은 또한 당신의 속도 aswell을 향상 index을 할 수 있습니다.

다른 필드를 기반으로 필드를 쿼리하려면 필드에 참여하고 싶습니다.

you'r는 안드로이드와 SQLite는 새로운 당신은 사용하기 쉬운 paging library

을 제공 Room라는 새로운 안드로이드 라이브러리를 살펴해야하는 경우