본문 바로가기

안드로이드/알아두기

(19)
[안드로이드] 코루틴에 대하여 사실 코루틴은 이미 쓰고있다. 대신 정말 1%만 쓰고있다고 자부할 수 있다. 정말 GlobalScope.launch{ ... } 이렇게 비동기 처리를 할 요량으로만 사용중이다.. 하지만 최근 이직 시장을 살펴보면서 알게된건 코루틴을 사용하는 것에 대하여 보다 면밀하고 세밀하게 알아야 할 필요성을 많이 느껴서 이렇게 코루틴에 대하여 정리를 하게 되었다. Coroutine 코루틴에 대해서 알아보려고 하다가 아래 코틀린을 소개해주는 코틀린 컨퍼런스 영상을 보았다. 시간이 된다면 다들 보는걸 추천한다. 개인적으로 직관적으로 설명을 잘 해주었다. 코틀린 컨퍼런스 2017 - https://www.youtube.com/watch?v=_hfBv0a09Jc 내가 주로 API Call이나 Room 작업을 할 때 메인 스..
[안드로이드] View와 ViewGroup에 대하여 View 액티비티에서 화면을 구성하는 최소 단위로 화면에 보이는 모든것은 View이다. 이러한 View는 Object 클래스를 상속받으며, TextView, EditText, Button 등 모든것들이 다 View에 해당하고, 위젯이라고 부르기도 한다. ViewGroup ViewGroup은 n(n>=1)개 이상의 View를 담을 수 있는 일종의 컨테이너로서, View를 상속받는다. 이러한 ViewGroup은 우리가 흔히 아는 LinearLayout, RelativeLayout, ConstraintLayout이 포함된다.
[안드로이드] 제네릭 함수, 클래스 정의하고 사용해보기 코드를 보면서 시작해보자 val temp :List = listOf() 위 코드를 보면, 'List안에 String을 집어 넣어서 리스트를 구성할게!' 라고 선언을 해줬다. 그렇다면 String 말고 다른건 넣을 수 있냐? 물론 넣을 수 있다. Int를 집어넣으면 Int를 집어넣는 리스트가, Double을 집어넣으면 Double을 집어넣는 리스트가 된다. 좀 자세히 보면, 저 리스트 타입 지정해주는 꺽세 안에는 무슨 타입만 들어가면 상관없는건가? 하고 Collections.kt를 뒤져보니까 아래처럼 나온다. public interface List : Collections public interface 그래 여기는 알지 그치 인터페이스라고? 근데 그 다음은 뭐냐 List 그래 이건 인터페이스 이름이잖아. ..
[안드로이드] LiveData에 대하여 다시 이전에 나는 LiveData에 대하여 정리하였다. 물론 약 8개월이 지난 지금 시점에서는 당연히 기억이 안난다. 내가 글을 썼다는 사실도 몰랐으니 말 다 한셈이다. 그래서 새로운 마음으로 LiveData에 대하여 다시금 정리를 해봐야 겠다. 대신 이전이랑 다르게 간략하게 해보자. 할 것들이 너무 많으니까. - LiveData 항상 단어에서 뜻을 유추하는 과정이 나는 좋다. LiveData.... 살아있는 데이터이다. 무엇인가가 살아있다는 것은 성장을 하고 변화하는 의미를 내포하지 않을까 싶다. 그래서 이런 의미를 염두해두고 라이브 데이터에 대해 알아보니 아래와 같은 특징이 보였다. LiveData는 Lifecycle 내에서 관찰할 수 있다. Live Data는 데이터 홀더 클래스이다. LiveData는 ..
[CS] 프레임워크와 라이브러리 안드로이드 개발자 면접이라고 안드로이드 질문만 한다는 보장은 없다. 그래서 그동안 궁금했는데 귀찮아서 알아보지 않았던 CS에 대한 상식도 몇 가지 공부해본다. 차이점을 알기전에 무엇인지 알아보자 - Framework(프레임워크) 먼저 프레임워크에 대해서 설명해본다. 프레임워크는 Frame과 work의 합성어이다. 여기서 Frame은 다들 알다시피 구조, 틀, 일정한 규격으로 완성되어있거나, 그것을 완성시킬 수 있는 요소들의 집합이다. 그리고 그 정해진 구조와 틀, 규격을 준수하며 일하는 것이 프레임워크의 뜻이다. 아래 글 참조에 링크를 걸어둔 새로비님이 찰떡같은 비유를 해주셨는데, Framework를 일종의 레고에 대입해보자. 레고에는 일정한 형태와 틀, 그리고 Description이 있고, 그것들을 가..
[안드로이드] Handler와 Looper 에 대하여 1. Handler와 Looper에 대해 알아보기 전에 핸들러와 루퍼에 대한 설명전에 왜 핸들러와 루퍼에 대하여 알아야 하는지 알아보자 위 그림을 보자. 2개의 스레드 모두 값은 다르지만 textView.setText() 동작을 한다. 근데 스레드들이 병렬구조로서 동시에 textView에 접근하여 setText()를 한다면, 오류가 발생하게 된다. 그래서 안드로이드에서는 메인 스레드만 UI 작업을 처리할 수 있게 해두었다. 그래서 메인 스레드를 UI 스레드라고도 불린다. 하지만 메인 스레드가 UI 스레드라고 해서 오직 UI 작업만 처리하는게 아니다. BroadCast Receiver, Service 등과 같은 작업도 물론 UI 스레드에서 처리된다. 다만 UI 작업은 오직 메인 스레드에서만 처리되니까 UI..
[안드로이드] MVP와 MVVM 패턴에 대하여 주먹구구식으로 하는 코딩은 스케일이 커져가면서 스파게티 코드가 되기 마련이고, 나중에는 유지보수나 수정이 어렵게 된다. 이러한 이유 때문에 우리는 디자인 패턴을 사용하여 복잡해지고 거대화 되가는 프로젝트를 효율적으로 관리하는 것이다. 오늘은 위에서 설명한 디자인 패턴 중에서 MVP와 MVVM 패턴에 대해서 설명할 것이다. 코딩에는 정답이라는 표현보다는 더 효율적인 방법을 선택하는 것이기 때문에 오늘 설명할 디자인 패턴에 대하여 어떤것이 더 좋다라는 접근보다는, 이 패턴이 내가 하는 프로젝트에는 더 효율적이다라는 접근을 하는 것이 더 좋다. 1. MVP 패턴 (Model + View + Presenter) Model - Presenter에게 넘겨받은 데이터를 관리해주는 클래스 View - MainActiv..
[안드로이드] 안드로이드 4대 컴포넌트 누구나 다 알고, 누구나 다 정리하는 안드로이드 4대 컴포넌트를 정리하겠다. 주말이니까 호다닥 하고 게임하러 가야겠다. 1. 안드로이드 4대 컴포넌트 구성 요소 안드로이드에는 4개의 주요 컴포넌트가 있다. Activity(액티비티) Broadcast Receiver(브로드캐스트 리시버) Content Provider(콘텐트 프로바이더) Service(서비스) 위 4가지 이며, 각자의 4대 구성요소 각각이 하나의 독립된 형태로 존재한다. 그리고 각 요소들은 모듀 고유한 기능을 수행하고, Intent(인텐트)를 통하여 상호작용한다. 그럼 하나하나 간단하게 설명해보겠다. 1. Activity(액티비티) 액티비티는 사용자에게 보여지는 화면이라고 생각하면 된다. 화면을 통하여 사용자에게 특정 동착을 이끌어 내며 ..