* Cursor <interface>
- DB Query 로 반환된 결과 집합에 대한 R/W Access 를 제공
- Multi-Threads 에서 사용하는 경우 자체적으로 동기화 구현이 필요
- getCount()
: 행의 개수
- getPosition()
: default 값은 -1. 마지막 값은 last entry + 1 (즉, getCount() 값과 동일)
* CrossProcessCursor <interface>
- Remote Process 에서의 사용을 지원
- Cursor Window 를 채워서 Marshalling 된다
- getWindow()
: CursorWindow 를 return 한다. 이를 통해, 미리 채워진 데이터를 얻을 수 있다
* AbstractCursor
- 기본적인 Cursor 코드가 구현되어 있음
* AbstractWindowedCursor
- CursorWindow 를 이용해 데이터를 저장하는 기본적인 Cursor 클래스
* SQLiteCursor
- SQLiteDatabase 의 Query 결과를 제공하는 Cursor
- Multi-Threads 에서 사용하는 경우 자체적으로 동기화 구현이 필요
* MergeCursor
- 여러 커서들의 배열을 하나의 LinearCursor 로 사용
- Cursor interface 각각의 메소드는 구현에 따라 달라짐
* MatrixCursor
- Object[] 을 이용한 Cursor
* CursorWrapper
- 실제 동작을 Cursor 에 위임하는 Wrapper 클래스
- 메소드 일부분을 overriding 해서 Cursor 를 확장하기 위해 사용
* CrossProcessCursorWrapper
- CrossProcessCursor 를 Wrapping 하는 클래스
* CursorWindow
- 여러 커서 행들을 포함하는 버퍼
- Remote Process 는 CursorWindow 의 Read-only view 를 받는다
- 생산자에 의해 할당되고 데이터가 채워진 이후에 소비자에게 전달된다
- 각 (row, column) 에 데이터가 할당됨 (Blob, Integer, Long, Float, String)
- CursorWindow(String name)
: /framework/core/res/res/values/config.xml 의 config_cursorWindowSize 값으로 크기가 생성됨 (Default=2MB)
- CursorWindow(String name, long windowSizeBytes)
: P OS 이후부터는 windowSizeBytes 를 전달받아 해당 크기로 CursorWindow 를 생성할 수 있음
- 데이터가 추가되는 경우, 동적으로 메모리가 할당되며 데이터의 크기는 할당된 메모리 이하일 수는 있으나,
초과할 수는 없다
'SW > Android' 카테고리의 다른 글
OS 버전 별 변경사항 (0) | 2021.08.01 |
---|---|
Android DB (SQLite, Room) (0) | 2021.04.18 |
Dalvik VM (0) | 2020.08.15 |
AsyncTask (0) | 2020.08.15 |
Zygote (0) | 2020.08.15 |