Live Data는 MVVM패턴의 구성요소인 ViewModel에서 많이 사용되는 데이터 형식입니다. Live Data는 Android Jetpack에 포함되어 있는 라이브러리입니다. 공식문서에는 설명이 어렵게 되어 있어서 제 주관적으로 해석한 글입니다. (제 주관이 싫다면 뒤로 가기를 살포시 눌러주셍) 우선 Live Data는 observable data holer class입니다. 쉽게 설명하면 망보는 사람입니다. 이걸 안드로이드에서 적용해 보면 데이터가 변경되는지 감시하고 있다가 UI 컨트롤러(Activity, Fragment)들에게 알려줍니다. 그러면 UI 컨트롤러는 변경사항을 가지고 UI를 업데이트합니다. 감시자가 나는 원하지도 않는데, 계속 뭐뭐뭐 바뀌었다~ 이렇게 하면 듣는 사람들도 피곤하지 ..

Skils/Android
이번 글에서는 MVVM 패턴에서 빠질 수 없는 요소인 ViewModel에 대해서 공부해 본 걸 정리할까(?) 합니다. 자세한 내용과 코드는 공식문서에 있으므로, 공식문서를 참고하시면 될 것 같습니다.. (제가 편한대로 정리하기 때문) ViewModel이란? 액티비티와 프래그먼트와 같은 UI 컨트롤러의 로직에서 데이터를 다루는 로직을 분리하기 위해 등장한 Android JetPack 라이브러리이다. 두 가지를 분리해야 하는 이유 UI 컨트롤러(Activity, Fragment)의 목적 데이터를 표시해 주거나, 사용자가 어떤 작업을 했을 때 반응을 보여주거나 , 권한 요청과 같은 OS커뮤니케이션을 처리하는 것이 UI 컨트롤러의 목적이다. 따라서 UI 컨트롤러에서 데이터를 다루는 로직을 책임지게 되면 많은 유..
이전 글에서는 mvc에 대해서 포스팅했습니다. https://jja2han.tistory.com/256 [[Android] - 안드로이드 설계 패턴 (MVC) 📕배운 내용 안드로이드 애플리케이션 설계 패턴은 크게 3가지로 분류됩니다. ( MVC, MVP , MVVM) 이번 포스팅에서는 MVC에 대해서 알아볼 예정입니다. 애플리케이션 설계 패턴이 중요한 이유는 이전 jja2han.tistory.com](https://jja2han.tistory.com/256) 이번 글에서는 MVC의 문제점을 해결하기 위해 나온 설계패턴인 MVP에 대해서 적어볼까 합니다. MVC에서의 문제점!? 그것은 바로 View와 Model의 결합도가 높아서 유닛테스트가 불가능하다는 단점이 있습니다. 그 문제점을 해결하기 위해서 MVP..
📕배운 내용 안드로이드 애플리케이션 설계 패턴은 크게 3가지로 분류됩니다. ( MVC, MVP , MVVM) 이번 포스팅에서는 MVC에 대해서 알아볼 예정입니다. 애플리케이션 설계 패턴이 중요한 이유는 이전 글인 Clean - Architecture와 연관되어 있습니다. 간략하게 설명하면 앱의 지속적인 업데이트와, 안드로이드 정책의 계속적인 변화, 시장의 요구의 변화 등으로 인한 유지보수의 비용을 줄이기 위해서입니다. 여기서 잘 설계된 애플리케이션은 유지보수의 비용을 줄여주고, 안전성, 성능에 도움을 주기에 설계패턴을 완벽히 숙지하는 것이 중요하다고 생각합니다. 📕MVC란? Model , View , Controller의 구성요소로 관심사를 분리한 설계 패턴입니다. 안드로이드 앱 개발 초기에 많이 적용되..
모바일 앱 사용자 환경의 기본 개념 핸드폰을 사용하면서 앱을 잠시 떠나서 다른 앱을 사용하는 상황이 매우 흔하게 발생된다. 예를 들어 인스타와 카카오톡 같은 SNS를 사용하다가 전화가 오거나 알람이 울리면 사용 환경이 중단될 수 있다. 또, 스마트폰의 리소스는 제한되어 있으므로 운영체제가 공간이 필요하다고 판단되면 앱 프로세스를 종료하기도 한다. 이러한 상황이 발생하면 사용자 입장에서 난감하다. "아니 인스타 , 카톡 하다가 전화 왔다고 갑자기 앱이 종료된다고?!" 이렇듯 사용자 혹은 운영체제가 앱 구성요소를 제거할 수 있기 때문에 우리는 앱 데이터나 상태를 앱 구성요소에 저장하며 안되며, 앱 구성요소가 서로 종속되면 안 된다. --> 이것이 모바일 앱 사용자 환경의 기본개념이다. 클린 아키텍처(Clea..
안드로이드 생명주기는 안드로이드 개발에 필수적인 지식이며, 꼭 필요한 내용이라고 생각합니다. 생명주기에는 3개의 생명주기(Activity, Fragment, Service)가 있지만 이번 글에서는 Activity life cycle에 대해서 다룰 예정입니다. 안드로이드 개발 면접에서도 자주 나오는 주제고, 저도 그랬지만, 대충 알고 넘겼었는데, 이번 글로 확실하게 개념을 잡아볼까 합니다. 📕생명주기(Life Cycle) Activity가 생성, 정지, 재생, 종료 등 여러 상태 간의 전환을 위해 6가지 콜백으로 구성된 핵심세트를 제공합니다. Activty 간 새로운 상태에 들어가면 시스템은 각 콜백을 호출한다. 📗콜백(callback) A가 어떤 특정한 동탁을 한다면 A가 B에게 알려 주는 것을 의미합니..
안드로이드 개발에 관심이 있었고, 이번학기에 모바일앱프로그래밍1을 들었습니다 확실히 흥미가 있던 분야라서, 강의내용도 재밌고, 열심히 듣게되었는데, 이번에 기말 대체로 프로젝트를 진행해서 조별과제를 진행했습니다. 이 때까지 같이 했던 프로젝트(개발)은 제가 원하던 사람들과 팀을 이루어 하던 프로젝트였는데, 이번 팀 프로젝트는 조원도 랜덤이고, 주제도 기말이후로 알려준거라 시간적으로도 부족하고, 모르던 사람들과 하려니까 굉장히 어색하고, 서툴렀던것 같습니다.. (마음은 앞섰지만요 ㅎ) 구체적인 개발 시작은 중간고사가 끝나고 바로 주제가 공개되었고, 팀원들끼리 일정을 조율해서 12월16일까지가 제출기한입니다. 우선 개발 주제는 간단하게 개선된 키오스크를 만드는 것입니다. 사용할때는 몰랐는데 키오스크의 문제점..
📕프래그먼트 액티비티처럼 동작하는 뷰 클래스 액티비티의 사용자 인터페이스를 여러 개의 조각으로 나눈 것 여러 개의 프래그먼트를 조합하여 액티비티가 출력하는 한 화면의 UI를 표현할 수 있음. xml 상에서는 FrameLayout 태그 안에서 코드를 작성함. 📕프래그먼트 생명주기 onAttach() -> onCreate() -> onCreateView() -> onViewCreated() -> onStart() -> onResume() 📕Fragment 소스 코드 파일을 생성하면 자동으로 onCreateView()가 생성됨 자동 호출되며 반환한 View 객체가 화면에 출력됨. 이렇게 하나의 화면에서 여러 개의 프래그먼트를 조합하여 UI를 표현할 수 있다. 📕MainActivity 코드 FragmentTra..
이번 글에서는 androidx 라이브러리 중에서 appcompat 라이브러리에 대해서 써볼까 합니다. 📕androidx 라이브러리 화면 구성과 관련된 라이브러리 androidx.appcompat 앱의 API 레벨 호환성을 해결 androidx.recyclerview 목록 화면을 구성 androidx.viewpager2 스와이프로 넘기는 화면을 구성 androidx.fragment 액티비티처럼 동작하는 뷰를 제공 androidx.drawerlayout 옆에서 서랍처럼 열리는 화면을 구성 📕appcompat 라이브러리 안드로이드 앱의 화면을 구성하는 액티비티를 만들며 API 레벨의 호환성 문제를 해결 appcompat 라이브러리 선언 dependencies 항목에 appcompat 선언(자동 추가) appc..