본문 바로가기

안드로이드

(34)
[안드로이드] 제네릭 함수, 클래스 정의하고 사용해보기 코드를 보면서 시작해보자 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는 ..
[안드로이드] 임장노트 #1 프로젝트 구상하기 열심히 공부하기로 결정했으니 개인 프로젝트는 필수아니겠는가? 그래서 개인 프로젝트를 하나 시작했다. 그것에 대한 기록을 해두는 포스팅이다. 어떤 앱을 만들 것인가? 제테크에 관심이 많아져서 부동산 경매 강의를 듣고 있다. 이 부동산 경매를 듣다보니 많은 사람들이 부동산 경매 물건지에 가서 주변을 살펴보며 부동산을 살지 말지 결정하는 임장을 기록하는 앱을 만들면 재밌겠다 싶어서 시작하게 되었다. 목표를 설정하자 당연히 1차적인 목표는 Play Store에 올리는 것이다. 그리고 좀 더 나아가서 서비스를 확장시켜서 내 개인앱을 키워 나가보는게 목표다. 프로젝트를 구성하자 - MVVM 당연스럽게도 디자인패턴은 MVVM이다. 서비스가 확장된다면, 기존의 메소드들을 재사용할 것이다. 그런 기분 좋은 미래를 생각하..
[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(액티비티) 액티비티는 사용자에게 보여지는 화면이라고 생각하면 된다. 화면을 통하여 사용자에게 특정 동착을 이끌어 내며 ..
[안드로이드] context에 대하여 면접 일정이 잡혔다(무야호). 서류 하나만으로 나를 만나보고 시간을 투자해주는 곳이기에 나도 기술면접 준비를 열심히 해야겠다. Hilt는 좀 나중에 정리를 해야겠다! 첫 시작은 context로 할 것이다. 항상 applicationContext, requireContext()를 열심히 하지만 정확히 어떤건지에 대한 정리가 한 번쯤은 필요할 것 같아서 정리를 해본다. 1. Context란? Context란 한글로 풀어서 쓰면 맥락 이라는 의미이다. 그렇다면 이 맥락이라는 의미를 조금 더 쉽게 풀어서 쓰자면, 내가 어떤 말을 할 때 특정 단어를 언급한다고 가정해보자. 그리고 그 특정 단어는 현재 상황에 맞는 단어일 수 있고 아닐 수 있다. 이때 우리는 해당 단어가 '이 맥락에 어울린다', 혹은 '어울리지 않..