<Cursor Hierarchy>

 

* 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

+ Recent posts