본문 바로가기

안드로이드30

[안드로이드/JAVA] 의존성주입(DI)을 알아보자 오늘은 클린 아키텍처를 설계할 때 필요한 친구인 의존성 주입(DI)을 공부해왔다. 차근차근 알아보자. 의존성 주입이란? 의존성 주입( DI, Dependency Injection )이란 하나의 객체에 다른 객체의 의존성을 제공하는 기술을 말한다. 이 의존성 주입이란 단어를 처음 듣는다면 좀 어렵게 느껴질 수 있는데, 의존성과 주입이라는 단어를 나누어 생각하면 좀 더 이해하기 쉽다. 의존성은 객체 지향에서 두 클래스 간의 관계이다. 일반적으로 둘 중 하나가 다른 하나를 필요로 한다. 예제를 하나 살펴보자. class CPU {} public class Computer { private CPU cpu; public Computer() { cpu = new CPU(); } } 컴퓨터에 포함되는 CPU가 컴퓨터.. 2022. 6. 13.
[안드로이드] Activity와 Fragment Activity 개요 안드로이드 앱이 실행이 되면 화면이 등장하고 UI가 화면 위에 나타난다. 버튼을 터치하거나 스크롤 등 여러 가지 활동이 가능하다. 이러한 전반적인 활동을 담당하는 구성요소이다. 또한 안드로이드의 4대 구성요소 중 하나이기도 하다. main() 메서드를 사용하여 앱을 실행하는 일반적인 프로그래밍 패러다임과는 달리 수명 주기의 특정 단계에 해당하는 특정 콜백 메서드(ex : onCreate)를 호출하여 Activity의 인스턴스 코드를 시작한다. 개념 모바일 앱 환경은 사용자와 앱의 상호작용이 항상 동일한 위치에서 시작되는 것이아니다 (데스크톱 앱 환경과의 차이점). 사용자는 흔히 비결정론적으로 시작시킨다. 이게 무슨소리인지 모르겠다면, 인스타그램으로 예를 들어보자. 우리가 홈화면에서 .. 2022. 6. 7.
[안드로이드] 클린 아키텍처 정리 오늘 알아볼 것은 클린 아키텍처이다. 요즘 책을 읽으면서 공부 중인데 클린 아키텍처에 대한 이야기도 있어서 내가 정리할 겸 글도 쓴다. 아직까지 응용 부분은 힘든 점이 있어서 이번 글에 응용까지 담기는 어려울 것 같고 다음 글에 클린 아키텍처를 도입하여 다시 한번 설명해 주겠다. 클린 아키텍처 클린 아키텍처는 로버트 C. 마틴에 의해 만들어진 철학으로, 소프트웨어의 관심사를 계층별로 분리하는 소프트웨어 디자인 철학이다. 이 클린 아키텍처의 주요 원칙은 코드의 종속성이 외부로부터 내부로 의존한다는 것이다. 내부 계층의 코드는 외부 계층의 기능을 알 수 없다. 외부 계층에 존재하는 변수, 함수 및 클래스( 모든 엔티티 )는 안쪽 계층에서 다시 등장이 불가능하다. 데이터 형식도 계층 간에 별도로 유지하는 것이.. 2022. 5. 24.
에러 java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant). 해결 오늘 bottomsheet를 쓰다가 style을 바꿀 일이 생겨 바꾼 다음 실행을 했는데, 이러한 장문의 에러가 발생하였다. 처음 만나보는 에러였기에 혼자 해결하지는 못했고 여러 가지를 열심히 검색해봤다. 처음에는 위에 있는 causeby인 Binary XML file line #29에 대해 찾아봤지만 해답이 나오지 않았다. 그래서 맨 위에 있는 java.lang.RuntimeException: Unable to start activity ComponentInfo~ 이 친구 때문인가하며 열심히 검색해보며 고쳤지만, 더더욱 삽질만 해댔다. 그러다 아래로 내려보니 또 다른 에러가 있었다. 바로 제목이기도 한 java.lang.IllegalArgumentException: The style on this co.. 2022. 5. 13.
[안드로이드] LiveData 좀 더 자세히 알아보기 저번에 LiveData를 데이터 바인딩과 합쳐서 설명을 해 줬었는데, 그때 LiveData에 대한 설명이 좀 부족했었다. 내가 잘 모를 때이기도 하면서, 급하게 썼었기 때문인 것 같다. 그래서 이번에 제대로 한번 공부해 와 보았다. 먼저 Gradle세팅부터 해야 한다. 저번에 말했던 gradle(Module:...) 파일에 dependencies { ... implementation 'androidx.appcompat:appcompat:1.4.1' ... } dependencies에 이렇게 implementation을 해준다. 그러면 세팅은 끝이 났다. 일단 실습으로 들어가기 전에 이론적인 것을 먼저 알아보자. LiveData란? Livedata는 관찰 가능한 데이터 홀더 클래스이다. 일반적인 Obser.. 2022. 5. 2.