안드로이드

· Skils/Kotlin
코루틴 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴입니다. 비동기 vs 동기 예를 들면, 요리를 할 때 동생 같은 요리 초보는 프라이팬을 하나만 사용하면서 요리를 한다. 이러한 방식을 동기라고 한다. 나같은 요리 고수는 프라이팬을 여러 개 사용하면서, 칼질도 하는 등 여러 작업을 동시에 한다. 이러한 방식을 비동기라고 한다. 그렇다면 비동기가 왜 필요할까? 만약 내가 버튼을 누름과 동시에 데이터베이스에서 접근해서 데이터베이스를 읽어 들이는데, 그 데이터베이스를 기다리는 동안 화면 UI는 데이터베이스에서 정보가 들어오지 않았기에, 계속 기다려야 하고, 그렇게 되면 사용자 입장에서는 텅 빈 화면을 바라봐야 한다. 이러한 상황이 발생되면 사용자도 불편하고..
안드로이드 개발을 시작하고 꽤 많은 코드에서 Context를 명시하라는 조건이 있었다. Context가 사전적 의미로 대충 문맥, 맥락 이런 뜻이기에 그냥 현재 Activity를 의미하는 줄 알았다. 하지만 자세히 파보니 Context가 단순 현재 Activity만을 의미하는 것이 아닌 것을 알게 되었고, 계속 공부를 할수록 Context를 명시해야 하는 코드가 많아지기에(ViewModel Observable 등등..), 개념을 정확히 이해할 필요성이 있어서 정리하려고 합니다.! 💡안드로이드에서의 Context Context란 단어 그대로 맥락을 의미하며, 현재의 상태를 나타낸다고 이해하면 편할 거 같습니다 Context에 대한 중요한 몇 가지 사실 들 애플리케이션의 현재 상태를 Context를 통해 표..
Live Data는 MVVM패턴의 구성요소인 ViewModel에서 많이 사용되는 데이터 형식입니다. Live Data는 Android Jetpack에 포함되어 있는 라이브러리입니다. 공식문서에는 설명이 어렵게 되어 있어서 제 주관적으로 해석한 글입니다. (제 주관이 싫다면 뒤로 가기를 살포시 눌러주셍) 우선 Live Data는 observable data holer class입니다. 쉽게 설명하면 망보는 사람입니다. 이걸 안드로이드에서 적용해 보면 데이터가 변경되는지 감시하고 있다가 UI 컨트롤러(Activity, Fragment)들에게 알려줍니다. 그러면 UI 컨트롤러는 변경사항을 가지고 UI를 업데이트합니다. 감시자가 나는 원하지도 않는데, 계속 뭐뭐뭐 바뀌었다~ 이렇게 하면 듣는 사람들도 피곤하지 ..
이번 글에서는 MVVM 패턴에서 빠질 수 없는 요소인 ViewModel에 대해서 공부해 본 걸 정리할까(?) 합니다. 자세한 내용과 코드는 공식문서에 있으므로, 공식문서를 참고하시면 될 것 같습니다.. (제가 편한대로 정리하기 때문) ViewModel이란? 액티비티와 프래그먼트와 같은 UI 컨트롤러의 로직에서 데이터를 다루는 로직을 분리하기 위해 등장한 Android JetPack 라이브러리이다. 두 가지를 분리해야 하는 이유 UI 컨트롤러(Activity, Fragment)의 목적 데이터를 표시해 주거나, 사용자가 어떤 작업을 했을 때 반응을 보여주거나 , 권한 요청과 같은 OS커뮤니케이션을 처리하는 것이 UI 컨트롤러의 목적이다. 따라서 UI 컨트롤러에서 데이터를 다루는 로직을 책임지게 되면 많은 유..
📕배운 내용 안드로이드 애플리케이션 설계 패턴은 크게 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..
재한
'안드로이드' 태그의 글 목록