본문 바로가기

개발 코딩 정보 공유/안드로이드 자바 코틀린

안드로이드 앱 아키텍처 가이드 - ViewModel 편 개요 안드로이드 클린아키텍처 가이드에 따라서 이번편은 ViewModel 을 알아보겠습니다. ViewModel은 MVVM 패턴의 중간다리 역할 입니다. 분류를 하자면 presenter 쪽에 넣을수 있겠네요. Activity나 Fragment에서 들어온 요청을 받아서 넘기는 역할을 하게 되죠. 기존의 Activity 의 매시브한 클래스가 MVVM 패턴을 통해 한것 다이어트 되는 형태가 되는것이죠. 제가 느낀 핵심은 각각의 경계를 지키고 자기 할일만 하면됩니다. 시작 ViewModel은 클린아키텍트 3레이어에서 presentation 영역에 속합니다. ViewModel 사용의 가장 중요한 목표는 ViewModel 은 수명 주기를 고려하여 UI 관련 데이터를 저장하고 관리하도록 설계되었다는 것입니다. ViewM.. 더보기
안드로이드 앱 아키텍처 가이드를 따르라! 소개 안녕하세요. 김과자 입니다. 기존의 앱 개발계는 그야말로... '개판' 입니다. 소스는 이사람 저사람을 거치고 산넘고 물건너 뒤죽박죽 난리 블루스입니다. 그런곳이 어디냐구요 ?... 대부분이 이런 어려움을 겪고 있습니다. 안드로이드는 특히나 오픈소스가 많고, 프레임워크 레벨에서의 파편화도 심각했습니다. 그에 따른 개발기준도 해당 소스를 만진 개발자 수만큼 많았습니다. 정말이지 노답일수밖에 없죠. 그리하여... 구글은 개발 단에서 지킬 최소한의 기준을 제시합니다. 바로 앱 아키텍처 가이드 입니다. 이 기준을 지키면 그들이 말하는 클린 아키텍처에 한발짝 다가갈수 있습니다.(아마도) 그렇다면 과연 클린한 아키텍처란 무엇일까요? 매우 길어질수 있어서 다른글을 통해 한번 같이 알아보겠습니다. "한마디로 요약.. 더보기
안드로이드에서 사용하는 코루틴 (코틀린) 왜 이런글을? 안드로이드 (코틀린) 에도 코루틴을 통한 비동기 처리를 사용할수 있기 때문이죠. 안드진영에서는 대대손손 물려받은? 자바 계열의 스레드 개념을 활용하여 비동기 처리를 하곤 했습니다. 당연히 그렇게 사용했습니다. 그런데 이 스레드를 컨트롤 한다는건 매우 위험하고 어려운 복잡한 그러한 일이었기에...(대표적으로 메모리 문제 그리고 메모리 문제) 코틀린으로 넘어오면서 코루틴 이라고 하는 개념을 추가하여 비동기 방식의 로직처리를 안정적으로 할수 있게 되었습니다. (과연그럴까요?) = 정리 + 요약 하여 해당 내용을 공유 합니다. 코루틴? (Coroutine) 이름이 비슷하다고 해서 코루틴은 코틀린에서 새로 등장한 지식이 아닙니다. 아주 오래 전부터 기존에 있던 이론입니다. 코루틴(coroutine).. 더보기
웹뷰뿌시기 (webview) 파일업로드(사진업로드) 안녕하세요. 김과자 입니다. 오늘은 1편에 이어서 예정대로 웹뷰 뿌시기 2편 웹뷰계의 최강 빌런 !!! 파일업로드...에 대해서 알아보겠습니다. 웹뷰에서 파일업로드를 처리하기 위해서는 웹 소스에서 html5를 이용해서 form 태그에서 input type 을 file 로 지정하기만 하면 그 뒤는 식은죽 먹................ "여러분. 안드로이드 개발에 그런일은 없습니다." “의심하지 마세요. 모든것이 수동입니다.” … 그리하여 웹뷰에서 파일업로드를 처리하기위해서는 약 3가지 OS 버전에 대해 고려해야합니다. 왜냐구요? 버전별로 구현방식이 다릅니다. "네???" 하하하하ㅏㅎㅎㅎ하ㅏㅎ하ㅏ하ㅏ하... 웹뷰 뿌시기 2편 - 파일업로드(혹은 사진업로드) 시작해보겠습니다. 안드로이드 웹뷰상에서 파일(사진.. 더보기
웹뷰뿌시기(webview) 자주 쓰는 10가지 셋팅 안녕하세요. 김과자 입니다. 안드로이드 앱 개발중 웹뷰를 사용하여 개발하는 방식은 이제 아주 흔한 일이 되었죠. 네. 그렇습니다. 우리에게 익숙한 웹을 이용해서. 앱개발하는데 활용한다? 아싸 ! 개꿀!! 기존에 웹이 개발되어 있는걸 그냥 넣기만 하면 끝~?! 얼마나 좋습니까? "그런데 말입니다." 세상이 어디 그리 호락호락 한가요? 구글 새ㄲ... 아 아니 구글 님들이 얼마나 웹뷰를 잘 만들어 놓았느냐. "하핳하하핳ㅎㅎ하하하하핳..." 환영합니다. 지금 부터 여러분은 웹의 모든 동작을 수동으로 컨트롤 하게 될것입니다. 🙀 자. 그럼 이제부터 웹뷰 관련 셋팅을 연재해보겠습니다. - 자주 사용하는 것들 10가지 셋팅법 - 최강의 빌런. 파일업로드 문제!!! - 이건 진짜 심각한 ... window.open .. 더보기
안드로이드 'ShouldOverrideUrlLoading' 너는 누구냐? 안녕하세요. 오늘은 안드로이드 개발중 웹뷰를 사용하여 개발할때 반드시 알아두어야 할 녀석이죠. 'ShouldOverrideUrlLoading' 바로 이놈입니다. 웹뷰 사용시 이부분을 거치지 않으면 빈깡통 같은 웹뷰가 될것입니다. 따라서 여기서 특정한 동작을 컨트롤 하면 되는데요. 이녀석은 보통 아래와 같이 사용합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** * WebViewClient */ private inner class WebClient : WebViewClient() { override shouldOverrideUrlLoading(view:WebView , url:String) { //... return true } } 그런데 이 'shouldOverri.. 더보기
코틀린사용 - 자바static, 객체식, 객체선언, 컴패니언 코틀린에서 편리한 몇가지 사용 방법 객체 선언 코틀린을 사용하다 보면 자바에서 사용하던 부분을 비슷하게 처리하려면 어떻게 해야하지? 하는 부분이 생깁니다. 자바에서 싱글턴 패턴의 구현 그리고 익명클래스 등을 살펴 보겠습니다. public class SingleTest { private static SingleTest instance; private SingleTest(){ } public synchronized static SingleTest getInstance(){ if(instance != null){ instance = new SingleTest(); } return instance; } } 자바에서 싱글턴 구현은 보통 이런식이죠? 너무 장황하며, 복잡합니다. 코틀린에서는 object 키워드를 사.. 더보기
안드로이드 쓰레드 실체 파악하기 안드로이드 쓰레드 실체 파악 쓰레드 너란 녀석 오늘은 자바내의 쓰레드 기본적인 사용법과 디테일하게 실체를 파악해 보겠습니다. 사실 안드로이드개발에서 쓰레드의 실체는 리눅스의 그것 과 일치합니다. 아래의 이미지를 확인해보면 이유를 알수 있습니다. 계층 구조를 보시죠. 앱개발단 자체는 리눅스 커널을 베이스로 하고 있습니다. 때문에 앱 단의 쓰레드 또한 네이티브 pthread 를 기반합니다. 안드로이드는 pthread와 다르게 표현하려고 특별한 속성을 부여합니다. 1.UI 쓰레드 UI쓰레드는 응용프로그램의 시작과 끝을 같이 합니다. 화면에 구성요소를 실행/변경하고 이를 메인쓰레드 라고도 합니다. UI요소에 타 쓰레드가 접근하게 되면 바로 Exception을 보실수 있습니다. 오직 메인쓰레드만이 UI 조작이 가.. 더보기