[ANDROID] 데이터 바인딩 라이브러리
μ•ˆλ“œλ‘œμ΄λ“œ 2020. 3. 25. 12:14

Data Binding? μ½”λ“œμ—μ„œ μž‘μ„±ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, 선언적 ν˜•μ‹μœΌλ‘œ λ ˆμ΄μ•„μ›ƒμ˜ UI κ΅¬μ„±μš”μ†Œλ₯Ό μ•±μ˜ 데이터 μ†ŒμŠ€μ™€ κ²°ν•©ν•  수 μžˆλŠ” 지원 λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. 보톡 μ½”λ“œμ—μ„œ λ‹€μŒκ³Ό 같이 findViewById()λ₯Ό ν˜ΈμΆœν•˜μ—¬ μœ„μ ―μ„ μ°Ύκ³ , 데이터 μ†ŒμŠ€λ₯Ό μœ„μ ―μ˜ 속성에 κ²°ν•©μ‹œν‚€λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰ν•©λ‹ˆλ‹€. λ§Œμ•½ 데이터 바인딩 라이브러리λ₯Ό μ‚¬μš©ν•˜λ©΄ 이런 λ°©μ‹μœΌλ‘œ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ ˆμ΄μ•„μ›ƒ νŒŒμΌμ—μ„œ κ΅¬μ„±μš”μ†Œλ₯Ό λ°μ΄ν„°μ†ŒμŠ€μ™€ κ²°ν•©ν•˜λ©΄ μ•‘ν‹°λΉ„ν‹°μ—μ„œ λ§Žμ€ UI ν”„λ ˆμž„μ›Œν¬ ν˜ΈμΆœμ„ μ‚­μ œν•  수 μžˆμ–΄ λ”μš± λ‹¨μˆœν™”λ˜κ³  μ˜μ‘΄μ„±μ΄ λ–¨μ–΄μ Έ μœ μ§€κ΄€λ¦¬ λ˜ν•œ μ‰¬μ›Œμ§‘λ‹ˆλ‹€. 그리고 μ•± μ„±λŠ₯이 ν–₯μƒλ˜λ©° λ©”λͺ¨λ¦¬ λˆ„μˆ˜ 및 null 포인터 μ˜ˆμ™Έλ₯Ό λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 데이터 κ²°ν•© 라이브러리 μ‚¬μš© 데이터 κ²°ν•© 라이브러리λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” app μˆ˜μ€€..

[ANDROID] λ°± μŠ€νƒμ— λŒ€ν•œ 이해
μ•ˆλ“œλ‘œμ΄λ“œ 2020. 3. 14. 00:16

κ°œμš” Task에 λŒ€ν•΄ μ΄ν•΄ν•œλ‹€. Task와 μ•‘ν‹°λΉ„ν‹°μ™€μ˜ 관계에 λŒ€ν•΄ μ΄ν•΄ν•œλ‹€. λ°± μŠ€νƒμ˜ λ™μž‘μ— λŒ€ν•΄ μ΄ν•΄ν•œλ‹€. Task, Activity, λ°± μŠ€νƒ TaskλŠ” μ‚¬μš©μžκ°€ νŠΉμ • μž‘μ—…μ„ ν•  λ•Œ μƒν˜Έμž‘μš©ν•˜λŠ” Activity의 μ§‘ν•©μž…λ‹ˆλ‹€. ν•˜λ‚˜μ˜ Taskμ—λŠ” μ•‘ν‹°λΉ„ν‹° 집합을 μ—΄λ¦° μˆœμ„œλŒ€λ‘œ μ •λ ¬ν•΄λ†“λŠ” λ°± μŠ€νƒμ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€. λ°± μŠ€νƒμ€ Stack의 μ„±μ§ˆμ„ κ°€μ§€κ³  있으며 κ°€μž₯ μ΅œμ‹ μ— μ—΄λ¦° μ•‘ν‹°λΉ„ν‹°κ°€ κ°€μž₯ λ§¨μœ„λ‘œ μœ„μΉ˜ν•˜κ²Œ λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄μ„œ 이메일 μ•±μ—λŠ” μƒˆ λ©”μ‹œμ§€ λͺ©λ‘μ„ ν‘œμ‹œν•˜λŠ” μ•‘ν‹°λΉ„ν‹°κ°€ μ‘΄μž¬ν•˜κ³ , μ‚¬μš©μžκ°€ λ©”μ‹œμ§€ λͺ©λ‘μ—μ„œ λ©”μ‹œμ§€λ₯Ό ν•˜λ‚˜ ν΄λ¦­ν•˜λ©΄ λ©”μ‹œμ§€μ˜ λ‚΄μš©μ„ μƒμ„Έν•˜κ²Œ λ³Ό 수 μžˆλ„λ‘ μƒˆλ‘œμš΄ μ•‘ν‹°λΉ„ν‹°κ°€ μ—΄λ¦¬κ²Œ λ©λ‹ˆλ‹€. μ΄λ•Œ λ©”μ‹œμ§€ 상세보기 μ•‘ν‹°λΉ„ν‹°λŠ” λ°± μŠ€νƒμ— μΆ”κ°€λ˜λ©°, λ§Œμ•½μ— μ‚¬μš©μžκ°€ λ’€λ‘œκ°€κΈ° λ²„νŠΌμ„ νƒ­ν•˜λ©΄ λ©”..

[ANDROID] μ•‘ν‹°λΉ„ν‹° μƒνƒœ λ³€κ²½
μ•ˆλ“œλ‘œμ΄λ“œ 2020. 3. 12. 23:00

κ°œμš” μ•‘ν‹°λΉ„ν‹°μ˜ μƒνƒœμ— λŒ€ν•΄ μ΄ν•΄ν•œλ‹€. μ•‘ν‹°λΉ„ν‹°μ˜ μƒνƒœ 변경을 μœ λ°œν•˜λŠ” μ΄λ²€νŠΈμ— λŒ€ν•΄ νŒŒμ•…ν•œλ‹€. μ•‘ν‹°λΉ„ν‹°μ˜ μƒνƒœ 변경이 일어났을 λ•Œμ˜ λ³€ν™”λ₯Ό μ΄ν•΄ν•œλ‹€. μ•‘ν‹°λΉ„ν‹° κ΅¬μ„±μ˜ λ³€κ²½ μ•‘ν‹°λΉ„ν‹°μ˜ ꡬ성이 λ³€ν•  수 μžˆλŠ” μ—¬λŸ¬ μ΄λ²€νŠΈκ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€. μ•„λ§ˆλ„ κ°€μž₯ 많이 μΌμ–΄λ‚˜λŠ” μ˜ˆλ‘œλŠ” μ„Έλ‘œ λͺ¨λ“œμ™€ κ°€λ‘œ λͺ¨λ“œκ°„ λ°©ν–₯ 변화일 κ²ƒμž…λ‹ˆλ‹€. λ§Œμ•½ ꡬ성변경이 λ°œμƒν•˜λ©΄ μ•‘ν‹°λΉ„ν‹°λŠ” 제거되고 μ™„μ „νžˆ μƒˆλ‘œ μƒμ„±λ©λ‹ˆλ‹€. 즉, onPause(), onStop() 및 onDestory() 콜백 λ©”μ„œλ“œκ°€ 호좜이 λ˜λŠ”λ° μ΄λŸ¬ν•œ 상황이 μΌμ–΄λ‚˜λ©΄ μœ μ§€λ˜κ³  있던 UI μƒνƒœλ₯Ό μ™„μ „νžˆ μžƒκ²Œ λ©λ‹ˆλ‹€. UI μƒνƒœλ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•΄μ„œλŠ” ViewModel, onSaveInstanceState() λ©”μ„œλ“œ λ˜λŠ” 영ꡬ 둜컬 μ €μž₯μ†Œμ˜ 쑰합을 ν™œμš©ν•΄μ•Όλ§Œ ν•©λ‹ˆλ‹€. μ–΄λ– ν•œ 방법을..

[ANDROID] λ ˆμ΄μ•„μ›ƒ
μ•ˆλ“œλ‘œμ΄λ“œ 2020. 3. 10. 23:33

κ°œμš” λ ˆμ΄μ•„μ›ƒμ΄ 무엇인지 μ΄ν•΄ν•œλ‹€. λ ˆμ΄μ•„μ›ƒμ˜ 전체적인 흐름에 λŒ€ν•΄ μ΄ν•΄ν•œλ‹€. AdapterView와 Adapterκ°€ μ™œ ν•„μš”ν•œμ§€ μ΄ν•΄ν•œλ‹€. λ ˆμ΄μ•„μ›ƒμ΄λž€ λ¬΄μ—‡μΌκΉŒ? λ ˆμ΄μ•„μ›ƒμ€ μ•±μ—μ„œ μ‚¬μš©μž UIλ₯Ό μœ„ν•œ ꡬ쑰λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. λ ˆμ΄μ•„μ›ƒμ˜ λͺ¨λ“  μš”μ†ŒλŠ” View와 ViewGroupλ₯Ό 상속받아 λΉŒλ“œλ©λ‹ˆλ‹€. 일반적으둜 ViewλŠ” μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš©ν•  수 μžˆλŠ” 것듀을 그리며 ViewGroup은 View와 λ‹€λ₯Έ ViewGroup 객체의 λ ˆμ΄μ•„μ›ƒ ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆ λ°•μŠ€ μž…λ‹ˆλ‹€. View κ°μ²΄λŠ” 'μœ„μ ―'이라고 ν•˜κ³  ViewGroup κ°μ²΄λŠ” 'λ ˆμ΄μ•„μ›ƒ'이라고 λΆ€λ¦…λ‹ˆλ‹€. ViewλŠ” μ—¬λŸ¬ ν•˜μœ„ 클래슀 쀑 ν•˜λ‚˜κ°€ 될 수 있으며, ViewGroup은 λ‹€μ–‘ν•œ λ ˆμ΄μ•„μ›ƒ ꡬ쑰λ₯Ό μ œκ³΅ν•˜λŠ” μ—¬λŸ¬ μ’…λ₯˜μ˜ λ ˆμ΄μ•„μ›ƒ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. λ ˆμ΄μ•„μ›ƒ..