νμ΄μ§μ λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν°λ₯Ό μΌμ ν λ©μ΄λ¦¬λ‘ λλ μ μ 곡νλ κ²μ μλ―Έν©λλ€.
μλ²-ν΄λΌμ΄μΈνΈ λͺ¨λΈμμλ μ£Όλ‘ μλ²μμ νμμ§μ ꡬνν λ€, ν΄λΌμ΄μΈνΈλ₯Ό ν΅ν΄ μ¬μ©μκ°
μ΄λν νμ΄μ§μ μ 보λ₯Ό 보μ¬μ£Όλ κ²μ΄ μΌλ°μ μ
λλ€.
λ§μ½ νμ΄μ§μ μνκ³ μ¬μ©μνν
λ°μ΄ν°λ₯Ό 보μ¬μ£Όλ©΄ μ΄λ»κ² λ κΉμ?
Google μ Android λ₯Ό κ²μνλ©΄ κ²μκ²°κ³Όκ° μ½ 28 μ΅κ°λ λλ€κ³ ν©λλ€.
κ·Έλ¦¬κ³ 28 μ΅κ°μ κ²μκ²°κ³Όλ₯Ό λ€ λ³΄μ¬μ€ λ, 1κ°μ κ²μ κ²°κ³Ό 1byte μ ν¬κΈ°λ₯Ό μ°¨μ§νλ€κ³ κ°μ νλ©΄ μ¬μ©μλ
μ½ 2.8 Gbyte μ ν¬κΈ°λ₯Ό μ½μ΄μμΌ λλ€λ κ²μ
λλ€.
κ²°κ΅ μ¬μ©μκ° νλ² κ²μν λλ§λ€ μμ£Ό ν° λ€νΈμν¬ λΉμ©μ λ€κ² λ©λλ€.
μ΄λ κ² ν° λΉμ©μ κ°μνκ³ κ²μμ νλ μ¬μ©μλ μμ κ²μ
λλ€.
κ·Έλμ νμ΄μ§μ ν΅ν΄ λ°μ΄ν°λ₯Ό λλμ΄μ μ¬μ©μμκ² λ³΄μ¬μ£Όλ μ΄μ μ λλ€.
μ, κ·Έλ λ€λ©΄ λͺ¨λ°μΌ μ±μμμ νμ΄μ§μ μ΄λ¨κΉμ?
λͺ¨λ°μΌ μ±μμ νμ΄μ§μ κ·Έλ κ² μμνκ±°λ μλ‘μ΄ κΈ°λ²μ μλλλ€.
μ΄λ―Έ 무ν μ€ν¬λ‘€λ§ κ³Ό μ§μ° λ‘λ© κΈ°λ² μ΄λΌ λΆλ¦¬λ λ°©λ²μΌλ‘ λͺ¨λ°μΌ μ± μμ₯μμ λ§μ΄ μ¬μ©λλ ν¨ν΄λ€μ΄ μμΌλ©°,
μ΄ ν¨ν΄λ€μ ꡬννλ λ°©λ²μ λ리 μλ €μ§μ§ μ€λμ λλ€.
κ·Έλ λ€λ©΄ 무ν μ€ν¬λ‘€λ§κ³Ό μ§μ° λ‘λ© κΈ°λ²μ 무μμΌκΉμ?
무ν μ€ν¬λ‘€λ§μ λν΄ κ°λ¨νκ² μ€λͺ
νλ©΄
OnScrollListener λ₯Ό μ΄μ©ν΄ μ€ν¬λ‘€μ΄ νλ¨μ λλ¬νκ² λ λ,
λ°μ΄ν°λ€μ μ μ§μ μΌλ‘ κ°μ Έμ€λ λ°©λ²μ
λλ€.
무ν μ€ν¬λ‘€λ§μ νμ΄μ€λΆκ³Ό κ°μ΄ μ 체 리μ€νΈλ₯Ό 보μ¬μ£Όλκ² μ€μνκ² μλ μ±μμ μ¬μ©λ©λλ€.
μ§μ° λ‘λ© κΈ°λ²μ
μ°λ½μ² μ±κ³Ό κ°μ΄ μ²μμ λͺ¨λ λ°μ΄ν°λ€μ κ°μ Έμ 리μ€νΈλ₯Ό λ§λλ λ°©λ²μ λ§ν©λλ€.
μ΄λ ν¨μ€νΈ μ€ν¬λ‘€μ΄ κ°λ₯νκ² λ§λλλ€.
λͺ°λ‘ κΈ°μ‘΄ λ°©λ²μΌλ‘ ꡬννλλ°μλ λ¬Έμ μ λ€μ΄ μμ΅λλ€.
- RecylerView μ€ν¬λ‘€ μ μμ΄ν μ λ€λ£¨λ λ°©λ²μ΄ νμ
- μ€ν¬λ‘€ λ°©ν₯, μ΄λ―Έ νμ΄μ§κ° λ‘λ© μ€μΈμ§, λ μ΄μ λΆλ¬μ¬ λ°μ΄ν°κ° μμ λ κ°μ μν©μ λͺ¨λ κ³ λ € ν΄μΌλ¨.
- λ€μ νμ΄μ§ νΈμΆ μμ μ μμλ΄κΈ° μν UI μ²λ¦¬μλ μ§μ€μ΄ νμ
- 무μλ³΄λ€ κ³΅μμ μΈ κ°μ΄λκ° λΆμ¬...
- λΆλ¬μ¬ λ°μ΄ν°κ° ν΄ μλ‘ μ§μ°μ΄ 컀μ§κ³ λ§ κ²μ΄λ€.
- κ²°κ΅ μ¬μ©μλ κ·Έλμ μ무κ²λ λͺ»νκ² λλ€...
κ°λ°μκ° μ΄λ¬ν λ¬Έμ μ λ€μ κ³ λ €ν΄μ ꡬννκΈ°μλ κ½€ λ§μ λΉμ©κ³Ό μκ°μ΄ λλλ€.
2017λ 9μ, Google μμ Android Paging Libaray λ₯Ό λ°νλ₯Ό νμ΅λλ€.
Paging Libraryλ λλμ λ°μ΄ν° μ
μ μ²ν¬ λ¨μλ‘ RecyclerView μ μ½κ² λ‘λν μ μκ² ν΄μ€λλ€.
무μλ³΄λ€ μμ μΈκΈνλ λ¬Έμ λ€μ ν΄κ²°ν΄μ£Όλ μλ‘μ΄ λ°©μμΌλ‘ ꡬν λμ΄ μμ΅λλ€.
Paging Libraryλ Room μ΄ λλμ 쿼리 κ²°κ³Όλ₯Ό μ΄λ»κ² λ€λ£°μ§μμ λΉλ‘― λμμ΅λλ€.
SQLiteCursor λ λ΄λΆμ μΌλ‘ CusorWindow λ₯Ό ν΅ν΄ 2MBμ κ³ μ λ νμ΄μ§μ ꡬνν©λλ€.
쿼리μ κ²°κ³Όκ° 10MB λΌκ³ ν λ, 쿼리 κ²°κ³Όλ₯Ό νλ²μ μ μ¬νμ§ μκ³ μ΄μ€ μΌλΆμΈ 2MB λ§μ
CursorWindow μ λ‘λνλ€λ μλ―Έμ
λλ€.
λ§μ½ SQLiteCursor κ° μ‘΄μ¬νμ§ μλ νμ μμ²νκ² λλ©΄
CusorWindow λ ν΄λΉ νμ΄ μ‘΄μ¬νλ μ²ν¬λ₯Ό λΆλ¬μ μλμ°λ₯Ό λ€μ λ‘λνλ ννλ‘ νμ΄μ§μ μνν©λλ€.
νμ§λ§ CusorWindow λ₯Ό μ΄μ©ν λ΄λΆ νμ΄μ§μ λͺ κ°μ§ μ΄μ λ‘ μ±λ₯ λ¬Έμ λ₯Ό μΌμΌν¬ μ μκ³
μμΈ‘ λΆκ°λ₯ν λΆλΆμ΄ μλ€κ³ ν©λλ€.
κ·Έλμ Paging Library λ λ¨μΌ CursorWindow λ΄μμ λμνλ (SQLiteCursor μ λ΄λΆνμ΄μ§μ΄ λμνμ§ μλλ‘)
μ€λͺ° 쿼리λ₯Ό μ§ν₯νλ κ²μ΄ ν΅μ¬μ΄λΌκ³ ν©λλ€.
Paging Library λ PagedList, DataSource, PagedListAdapter λ‘ κ΅¬μ±λμ΄ μμ΅λλ€.