전체 글
-
MVVM 과 클린 아키텍처 무슨 차이일까.프로그래밍 2026. 5. 21. 21:57
MVVM(Model-View-ViewModel): 화면에 데이터를 어떻게 보여주고, 사용자의 입력을 어떻게 처리할지 고민하는 프레젠테이션 패턴(UI 아키텍처) 입니다.안드로이드 에서 MVVM은 UI와 상태(State)를 분리하는데 탁월한 역할을 합니다.역할은 다음과 같습니다. View(UI): 화면을 그리는 역할만 담당하며, View는 데이터를 직접 조작하지 않고 ViewModel의 상태(StateFlow, LiveData등)를 관할 하여 화면을 갱신합니다. ViewModel: View 와 Model 사이의 연결 고리이며, UI에 필요한 데이터를 홀딩하고, 사용자의 액션을 받아 비즈니스 로직을 호출 한 뒤 그 결과로 상태를 업데이트 합니다. Model: 앱의 데이터와 비즈니스 로직을 포함합니다.(네트워크..
-
안드로이드 앱 테마에 따른 색상 변경하기Android Studio 2024. 7. 16. 21:36
처음으로는 기존에 있는 색상을 바꾸지 않은 상태에서 AppCompatDelegate 을 이용하여 일반모드와 다크모드를 변경하는 코드를 작성해 보겠습니다. AppCompatDelegate는 Android의 AppCompat 라이브러리에서 제공하는 클래스 중 하나이며, 주로 app의 테마와 UI 모드를 동적으로 변경하는 데 사용합니다. 사용 예제로는 다름와 같습니다.// 다크 테마 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) // 일반 테마 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) // 시스템 설정에 따른 테마 AppCompatDelegat..
-
RecyclerView를 AsyncListDiffer 을 이용하여 효율 높이기Android Studio 2024. 6. 26. 21:17
레이아웃 구성 compose X , xml 파일 O RecyclerView 에 적용된 아이템에 대해서 상태 혹은 갯수가 변경되었을 때 마다 notifyDataSetChanged() 을 호출하여 갱신을 하였었는데, 여러 아이템 중 1개만 상태가 변하거나, 증감이 될 때마다 전체 아이템을 갱신한다는 점에서 비효율적 이라는 생각을 가지게 되었습니다. 이런 비효율적인 방법을 개선을 하고 싶었고, 이미 많은 개발자분들이 느끼셨는지 해당 비효율적인 방법을 효율적으로 사용할 수 있도록 만들어 두셨고, 해당 글들도 매우 많이 작성되어 있었습니다. 덕분에 저도 해당 글들을 보면서 현재 진행하고 있는 프로젝트 내 RecyclerView 내 아이템을 효율적으로 표시할 수 있게 되었습니다. 왜 효율적이죠? notifyData..
-
의존관계역전원칙(DIP)과 의존성 주입(DI)프로그래밍 2024. 1. 4. 16:26
의존관계역전원칙이란? 위키백과에 따르면 객체 지향 설계의 다섯 가지 기본 원칙(SOLID) 중 D가 가르키는 원칙입니다. 위키백과를 참조하여 쉽게 말하면 소프트웨어 모듈들을 분리하는 특정 형식을 지칭합니다. 의존관계역전원칙을 따랐을 경우에 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전(역전) 시킴으로 써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있습니다. 해당 원칙은 다음과 같은 내용을 가지고 있습니다 첫째. 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다. 둘째. 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다. 이 원칙은 '상위와 하위 객체 모두가 동일한 추상화에 의존해야 한다..
-
AVD Error while waiting for device 해결법Android Studio 2023. 12. 18. 15:11
안드로이드 스튜디오에서 작업을 하다가 avd 가 하기와 같은 오류가 발생하며 실행이 안될 경우 해결 방법입니다. 해당 사진과 ERROR을 보았을 경우 해결법은 매우 간단합니다. 1. android\avd\Pixel_2_API_33.avd(실행이 안되는 avd 명) 경로로 이동합니다. 2. 해당 경로에서 .lock로 끝나는 모든 파일을 삭제합니다. 3. 안드로이드 스튜디오에서 실행이 안되던 avd를 실행시킵니다.
-
자료구조 Part2CS 2023. 10. 17. 20:23
HashTable(HashMap) 1. HashMap은 비선형 자료구조 입니다. 2. 일정 크기의 배열을 생성한 후에 key 값을 Hash 함수를 통하여 배열의 index 로 변환하여, 해당 index 에 해당 key값과 value 값을 저장합니다. 3. 시간 복잡도 i번째 데이터에 접근(Access) : NONE / *O(N) -> key를 통하여 접근할 경우에는 O(1)의 시간 복잡도를 가지지만, 값을 이용하여 확인할 때는 O(N)의 시간 복잡도를 가집니다. key를 통하여 접근(containsKey) : key를 hash함수를 이용하여 변환하여 해당 인덱스를 바로 조회하기 때문에 O(1) 의 시간 복잡도를 가집니다. value를 통하여 접근(containsValue) : key와 달리 value 값..
-
자료구조 Part1CS 2023. 10. 16. 23:14
Array(배열)1. 메모리 상에서 데이터가 연속적으로 연결되어 있는 선형 자료구조 입니다. 2. 크기는 고정되어 있으며, 변경될 수 없습니다. 데이터의 삽입/삭제는 불가능합니다. 하기 표는 Int 형태의 배열을 표로 나타내본것 입니다. Int 는 4바이트 이기 때문에 4개의 byte 단위로 주소값을 가지고 있습니다. Boolean 의 경우에는 1개의 byte 단위로 주소값을 가지고 있습니다.0x6d5ab550a[]0x6d5ab550100x6d5ab5510x6d5ab5520x6d5ab5530x6d5ab554200x6d5ab5550x6d5ab5560x6d5ab5570x6d5ab558300x6d5ab5590x6d5ab5600x6d5ab5610x6d5ab562400x6d5ab5630x6d5ab5640x6d5a..
-
TECHIT 앱 스쿨 2기: Android 1기 후기[THEC!T] 앱 스쿨2기 : Android 2023. 9. 28. 17:54
안드로이드 앱 스쿨 과정은 저에게 부족했던 부분들을 채울 수 있었으며, 앞으로의 어떻게 나아가야하는지에 대하여 방향성을 알려준 과정이였다는 말을 먼저 하며 간략하게 후기를 작성해 볼 수 있도록 하겠습니다. 첫 번째로는 교육기간 동안 이론을 배웠던 기간을 말씀드리면 저의 경우 교육을 받기 전에 혼자 코틀린을 독학을 하면서 인프런 및 서적을 통하여 코틀린 문법 및 안드로이드에 대해서 공부하였었습니다. 하지만 스스로 why? 라는 질문에 대한 답을 찾기가 어려웠지만 교육기간동안 강사님께서 자세하면서 이해하기 쉽도록 자바, 코틀린, 안드로이드 문법에 대해서 알려주셨고, 잘 모르겠는 점에 대하여 질문을 드리면 다시 한번 알기 쉽도록 말씀해주셔서 혼자 독학을 하면서 채웠던 지식 내 슝슝 뚫려있던 저의 모자란 부분들..