컴퓨터공부/Android 32

ViewModel에 대한 Insight

1. ViewModel에서 View(Fragment, Acivity)에 직접 접근하거나 제어 해서는 안된다. 2. ViewModel에서 View를 변경하고 싶으면 LiveData나 Callback 혹은 Function Reference를 사용하면 된다. 예를 들어, 특정 View를 보이지 않게 하고 싶으면 "val enableLayoutVisibility = MutableLiveData()" 같은 변수를 사용하여 Observe 패턴으로 Fragment나 Activity에서 제어 하면 된다. 3. 장점 View와 Business logic을 분리 할 수 있으며, 이것은 많은 장점을 갖는다. View는 오직 View의 처리만 담당하므로 보기가 편하다. 이런 관심사의 분리가 발전하여 Compose UI를 탄생..

fragments 에서 view binding을 사용하기 위한 패턴

아래는 google이 보여줬던 기본 패턴이다. 그냥 이것을 바탕으로 살을 붙이면 된다. binding 변수를 사용하는 이유 _binding은 nullable 이라서 매번 _binding?.okButton 같은거 해주기 불편해서이다.(출처) onDestoryView()에서 _binding 에 null을 대입 하는 이유 memory leak 방지 private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! override fun onCreateView( inflater: Layo..

SaveInstanceState가 생긴 이유

출처 : https://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html 이전 포스팅에서 적었지만 InstanceState로 인하여 IllegalStateException  발생한다. 근데 이게 왜 필요한가? 안드로이드 플랫폼에서 상태를 자동으로 샤샥 저장해 주면 되잖아?? 물론 그렇다. 하지만 현실적인 문제가 있다. 폰의 메모리는 한정적이기 때문에 모두 저장해 주지 못한다. 거기다 플랫폼에서 메모리가 없으면 앱을 죽여 버리기 까지 한다.. 이것에 대한 해결책으로 안드로이드가 제시한 것은, 이전 상태의 정보를 저장하고 앱을 재 실행할 때 복원해 주는 것이다. 그럴듯하고 실제로도 잘 동작한다. 다만 개발자가 ..

Fragment 전환 시 IllegalStateException 원인 및 해결

출처 : https://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html https://proandroiddev.com/kotlin-extensions-to-commit-fragments-safely-de06218a1f4 https://stackoverflow.com/questions/7575921/illegalstateexception-can-not-perform-this-action-after-onsaveinstancestate-wit 원인 Activity의 onSaveInstanceState()가 호출된 후에 FragmentTransaction의 commit()을 동작하는 데에 있습니다. 이건 안드로이드..

안드로이드 텍스트뷰 속성 (Android TextView Attributes)

이 글은 제가 작성한게 아니라... 제가 나중에 쓰려고 하는 스크랩에 가깝습니다. 더 자세한 건 출처를 참고 하세요~ + TextView 속성의 종류 autoLink TextView를 링크 형태로 사용. autoText 텍스트 입력 시, 자동 오타 수정 기능 사용. breakStrategy TextView의 텍스트 줄넘김 정책 지정. bufferType getText() 함수로 리턴되는 버퍼 타입 지정. capitalize 알파벳 소문자 입력(표시) 시, 대문자로 자동 변환. cursorVisible 텍스트 입력 커서를 보일지 말지 여부 지정. digits TextView에 입력 가능한 문자 제한. drawableBottom 텍스트를 기준으로 아래쪽에 이미지 출력. drawableEnd 텍스트를 기준으로..

안드로이드 스튜디오 개발 시 람다 표현식 안 먹힐 때,

한 번도 그런적이 없었는데.. 오늘 갑자기 아래와 비슷하게 람다가 안 먹힌다.. 그럼 아래처럼 compileOptions를 추가해 주거나, android { defaultConfig { ... } compileOptions { targetCompatibility 1.8 sourceCompatibility 1.8 } } Project Structure에서 targetCompatibility, sourceCompatibility 를 Java 8 이상으로 설정하면 됩니다. 둘 중에 하나만 하면 나머지는 자동 반영 됩니다. 출처 : fluorite94.tistory.com/85 breakcoding.tistory.com/196

Android Profiler 사용법 & JVM에서 메모리 릭 정의

아래 영상들을 순서 대로 보면 어떻게 사용하는지 알게 될 겁니다. 영어를 모르시면 유튜브 자동 번역으로 보세요..(갓튜브..) 매우 간단한 사용법 https://youtu.be/FxDa2td6Ej8 실제 어떻게 사용하는지 예시 프로젝트로 알려줌 https://youtu.be/4Wnu_2meZaI 자세히 알려줌 Deep Dive into Android Studio Profilers (Android Dev Summit '18) https://youtu.be/LGVbpobV-Yg Demystify the data in Android Studio Profilers (Android Dev Summit '19) https://youtu.be/v4kCRZ_O4Lc network profiler 사용법 youtu.be..