[Kotlin][AndroidStudio][CallbackFunction&&Listener]
RecyclerView
RoomDatabase 활요하는 방법! SQLite는 빠이염 ~ ㅋ
사용자에게 메시지 창을 띄울 수 있음. 사용하는 방법 Dialog의 Layout.xml 파일을 만든다. AlertDialog.Builder(context).apply{ setTitle("") setMessage("") setView(사용자에게 보여질 뷰) setPos
\#ㄴㄴ
웹 애플리케이션 또는 웹페이지만 클라이언트 애플리케이션의 일부로 제공하려는 경우 WebView를 사용하면 됩니다. 공식문서layout.xml 파일에 WeabView 추가.AndroidManifest.xml 파일에 인터넷 권한 추가하기. uses-permission an
MediaPlayer
ARCore는 증강 현실 경험을 구축하기 위한 Google의 플랫폼입니다. (공식문서)공식문서 링크 : https://developers.google.com/ar/develop?hl=ko 개추 ㅋ우선 AR 필수 앱을 사요할 것이지 아니면 AR 선택적 앱을 개발
서버와 클라이언트가 각각의 소켓을 생성하여 각각의 소켓을 통해서(데이터를 소켓에 담아서 주고 받음) 서버와 클라이언트 간의 통신이 이루어진다.1.AndroidManifest.xml에 인터넷 권한을 추가해준다.uses-permission android:name = "a
유튜브 링크 -> https://xn--youtube-ix1a.com/@user-te8xl2tj4i블로그 링크 -> https://blog.naver.com/cenodim\-이전에 자신의 실행이 마지막으로 중단되었던 지점 다음의 장소에서 실행을 재개한
안드로이드 스튜디오에서 선언형 UI 작업을 가능하게 해주는 녀석.'선언형'이 지니는 의미 : '어떻게 무엇을 할지' => '무엇을 하는지'만 알려주면 됨.UI = f(state) : state랑 UI가 관련성이 생기면서, 기능에 좀 더 초점을 맞춰서 UI 작업을 진행
MVC 패턴이란 ? => Model + View + Controller의 약자로 , 안드로이드에서만 쓰이는 것이 아님. 하지만 나는 안드로이드에서만 쓸꺼지 ㅋ위의 사진을 보면은 , User가 Controller를 통해서 입력을 하면 , Controller는 Model에
dd
#"Firebase"란 ? 앱을 개발하는데 있어서 , 여러 편의 기능을 제공해주는 구글에 인수된 착한 친구 ㅋ 언제 무엇을 어떻게 사용하는지에 관련한 정보는 아래에 자세하게 나와있음. >Firebase에서 사용이 가능한 각종 편의 기능들 >1. Build >2.
#"Firebase"란 ? 앱을 개발하는데 있어서 , 여러 편의 기능을 제공해주는 구글에 인수된 착한 친구 ㅋ 언제 무엇을 어떻게 사용하는지에 관련한 정보는 아래에 자세하게 나와있음. >Firebase에서 사용이 가능한 각종 편의 기능들 >1. Build >2.
Intent Intent AndroidDeveloper 링크 => https://developer.android.com/guide/components/intents-filters?hl=ko Intent 정의 -인텐트는 "현재 앱 또는 다른 앱"의 구성요소[Activity , Service , Broadcast Receiver , Content Provid...
#Material Design 공식문서 링크 : https://m3.material.io/ compose + material design3 링크 : https://developer.android.com/jetpack/compose/designsystems/material3?hl=ko ![](https://velog.velcdn.com/images/antk...
ComposeNavigation -기존의 LegacyView에서는 Activity||Fragment + XML 파일을 활용해서 화면을 구성하고 리스너를 설정함으로서 사용자와 상호작용을 진행하였다. 이는 코드 작성시 불편함을 초래하였고 따라서 Compose라는 함수로 U
Solid 원칙
Coroutine
flow
Channel
#Service Android Developer 공식 문서 => https://developer.android.com/guide/components/services?hl=ko Background Service -Background Service는 사용자에게 보이지 않는 작업을 수행한다. -Jetpack의 WorkManager가 나와서 굳이 Backgro...
#BroadCast Android Developer 문서 링크 =>https://developer.android.com/guide/components/broadcasts?hl=ko BroadCastReceiver 정의 -안드로이드 앱이 안드로이드 시스템 또는 다른 앱에서 발생하는 다양한 이벤트 또는 정보를 받을 수 있게 도와준다. -BroadCastRe...
#WorkManager Android Developer 공식문서 =>https://developer.android.com/topic/libraries/architecture/workmanager?hl=ko =>https://developer.android.com/top
Content Provider
#Room Android Developer 공식문서 =>https://developer.android.com/training/data-storage/room?hl=ko (여기에 들어가면 좌측에 "로컬 데이터베이스에 데이터 저장" 하단에 Room에 대한 정보가 많음)
#Realm 공식문서 =>https://realm.io/ #Realm -MongoDB에서 개발하였으며 Realm Kotlin으로 안드로이드에서 사용 할 수 있고 , 백엔드와 실시간 데이터 동기화가 가능하다. -Realm은 별도의 데이터베이스를 포함해서 앱의 APK
https://www.youtube.com/watch?v=1iBcMHe29r0&t=1360s
#Banchmark Android Developer 공식문서 =>https://developer.android.com/studio/profile/benchmark?hl=ko #Android Developers Youtube 링크 =>https://www.youtube.com/watch?v=Z96wfbID_Yc Banchmark 기능 -항목을 스크롤하여 ...
-Timber를 사용하면 안드로이드 스튜디오에서 간편하게 디버그 기능을 활용 할 수 있다. 종속성 설정하기 -모듈 수준의 build.gradle에 아래와 같은 의존성 추가하기 Timber 장점 -Timber를 사용하면 로그를 출력 할 때 message를 자동으로 태그로 사용하기 때문에 일일히 태그를 작성 할 필요가 없다. 즉, 코드를 아래와 같이 작성해...
URI -고유한 리소스 식별자와 리소스를 나타낸다. 파일일 수도 있고 Res 폴더의 리소스 일 수도 있고 이미지 일 수 도 있고 비디오 일 수 도 있다. URI를 특정 리소스에 대한 경로라고 생각하는 것은 안된다. 즉, URI는 리소스를 찾아갈 수 있는 경로에 대한 식별자가 아니라 리소스를 구별하는 식별자인 것이다. URI 유형 1 / 리소스 URI -A...
#Material3 RadioButton 공식 문서 =>https://m3.material.io/components/radio-button/specs Google이 말하는 RadioButton -선택 옵션 리스트 중에서 하나의 옵션만 선택 하도록 유도하고자 할 때 라디오버튼을 사용한다. 즉, 라디오버튼은 단 하나의 옵션만 선택 할 수 있다는 것이야. 체...
#Material3 Top app bar =>https://m3.material.io/components/top-app-bar/overview Google이 말하는 Top app bar -현재 화면과 관련되 제목과 작업등을 사용자에게 보여주고 싶을 때 사용한다. 이때 상단앱에 해당 내용들이 포함되어야 한다. -4가지의 유형으로 나뉘는데 , [1.중앙정렬...
#Shortcut Android Developer 공식문서 =>https://developer.android.com/guide/topics/ui/shortcuts/creating-shortcuts?hl=ko -App Shortcut 즉, 바로가기 기능은 총 3가지 방법으로 분류된다. [1.정적 바로가기] , [2.동적 바로가기] , [3.고정된 바로가기]...
부수효과 -"Compose Ui가 렌더링 되는 것 이외의 효과를 주는 Composable Function" 또는 "Composable Context 내부에서 사용되는 특별한 Funtioin"을 의미한다. -Composable Function과 관련이 있기 때문에 "Compose 부수효과"라고 불린다. LaunchedEffect(suspend Functi...
#Material3 Checkbox 공식 문서 =>https://m3.material.io/components/checkbox/guidelines Google이 말하는 Checkbox -여러 관련 옵션을 목록에서 선택하고자 할 때는 스위치 대신에 체크박스를 사용해야 한다. 이는 유사한 항목을 시각적으로 효과적이게 그룹화하고 스위치 보다 공간을 덜 차지하기...
#state hoisting Android Developer 공식 문서 => https://developer.android.com/jetpack/compose/state-hoisting?hl=ko -StateHoisting은 디자인 패턴 중 하나로서 상태를 하위 컴포저블에서 최상위 컴포저블 또는 공통 부모 수준의 컴포저블로 끌어올려서 하위 컴포저블 간에 ...
Compose 수명주기 Android Developer 공식문서 =>https://developer.android.com/jetpack/compose/lifecycle?hl=ko [기본용어] -컴포저블 : 컴포저블 함수에서 사용되는 어노테이션의 이름이자 jetpack compose를 구성하는 함수의 이름이다. 선언형 UI를 구서하기 위한 기본 단위이자 최...
#JetpackCompose Rendering Phase Android Developer 공식문서 =>https://developer.android.com/jetpack/compose/phases?hl=ko&gl=11jnheglupMQ..gaMTA1MjAwOTk1MC4xNzA3OTEwNDAzga_6HH9YJMN9M*MTcwNzkxMDQwMi4xLjAuMTc...
#CompositionLocal Android Developer 공식문서 =>https://developer.android.com/jetpack/compose/compositionlocal?hl=ko #CompositionLocal -composable function은 트리구조로 이루어져 있고 보통 state는 트리의 최상단에 위치시키는 state ho...
#Material3 Switches 공식 문서 =>https://m3.material.io/components/switch/guidelines 구글이 말하는 스위치 -목록의 항목을 독립적으로 제어할 수 있는 경우 스위치를 사용하도록 권장하고 있다. -스위치는 사용자가 설정을 다룰 수 있는 가장 좋은 방법이다. -스위치 선택시 스위치가 켜졌을 때 기능과...
클린 아키텍처 1.만드려고 하는 앱이 해결하고자 하는 문제에 잘 어울리는 설계가 좋은 설계구조이다. -예를 들어 코드구조가 시스템이 어떻게 동작할 수 있는지를 잘 이해 할 수 있는지 보여줘야 한다. 2.작업이 편리해야 한다. -2.1 : 이해하기 쉽고 -2.2 : 왜 코드를 이렇게 작성했는지 알아야하고 -2.3 : 코드 유지 및 보수에 용이해야 하며 -...
-사실 모바일 클린 아키텍처 패턴이라는 개념은 사실 존재하지 않는다. 이런 아키텍처 패턴이 이제까지 존재하던 패턴이라기보다는 "밥 아저씨"가 주장하던 클린 아키텍처를 모바일에서 어떻게 잘 구현할 수 있을까를 고민하다가 나온 결과물이라고 볼 수 있다. 따라서 명시적으로 단 하나의 패턴이 아니고 정답이 있지 않기 때문에 사람들마다 생각이 다 다르다. 약간 사회...
아키텍처에서 테스트가 중요한 이유 현실적인 필요성 -아키텍처를 수정 할 때마다 많은 변화가 수반이 되고 앱에 굉장히 많은 영향이 갈 수 있다. 그렇기 때문에 그때마다 많은 테스트가 필요한데 다 사람들에게 맡긴다면 많은 시간과 비용이 소모된다. 좋은 설계를 촉진 -단일 책임의 원칙을 잘 지키지 않느 클래스라고 하면 여러개의 책임을 지니고 있는 것이고 , ...
구글이 개추하는 좋은 테스트의 조건 정확성 -검증대상의 행위가 실제 앱에서 동작할 것으로 기대되는 행위와 일치해야 한다. -원래 설계하고자 하는 행위가 설계를 통해서 정확하게 표시된다고 하는 의미에서 정확성이 중요한것이다. 명확성 -명확성은 간결성과 완결성 두가지로 나뉜다. 간결성 -테스트 코드가 목적을 달성하는데 필요한 최소한의 정보만을 가지고 작성...
#Android Test 공식 문서 =>d.android.com/training/testing #Google Testing Blog =>https://testing.googleblog.com 대원칙 : 테스트 불변성 -테스트는 변경되어서는 안된다. 작업이 변경되거나 기능이 변경되지 않고 어떤 코드의 재배치 같은 게 일어나거나 새로운 기능이 추가됐다든가 ...
#Android Test 공식 문서 =>d.android.com/training/testing #Google Testing Blog =>https://testing.googleblog.com 대원칙 : 테스트 불변성 -테스트는 변경되어서는 안된다. 작업이 변경되거나 기능이 변경되지 않고 어떤 코드의 재배치 같은 게 일어나거나 새로운 기능이 추가됐다든가 ...
-클린 아키텍처를 안드로이드 모바일에 적용하면 UI Layer / Domain Layer / Data Layer로 나뉘는데 해당 페이지에서는 UI Layer에 대해서 학습할 것임. -UI 계층을 Presentation 계층이라고 부르기도 한다. 이곳에서 안드로이드 설계에서 가장 중요한 부분이 이루어진다. MV로 시작하는 여러가지 패턴 / MVC / M...
MVP -View는 비즈니스 로직에 관련되지 못하도록 분리시키고 UI에 관련된 비즈니스 로직 한마디로 말해서 사용자가 클릭을 했을 때 어떤 의미를 가지고 있고 무엇을 해야 된다는 거의 모든 로직들은 프레젠터로 옮긴다. -View에서는 사용자가 입력을 했을 때 해당 입력이 View에 의해 감지가 되면 사용자의 입력을 Presenter에게 알린다. 알리는 ...
Android Developer UI Layer 공식문서 ->https://developer.android.com/jetpack/guide/ui-layer?hl=ko 위그림에서 ViewModel위에 DomainLayer라고 작성되어있는데 보통 ViewModel은 UI Layer에 넣는경우가 많고 이렇게 하는 것이 AndroidJetpack의 설계원치게 더...
-JavaScript의 리덕스를 기반으로 한 패턴이다. -MV? 패턴 들 중에서 유일하게 Intent와 상태라는 개념이 새로 도입되었다. 따라서 단방향으로 하나의 상태를 관리하는 선순환 원칙이 적용되어서 상태 충돌이 발생하지 않는 장점이 있다. -User가 Intent를 통해서 Model에 상태를 전달한다. -> Model 안에서는 전달받은 상태에 ...
가장 중요하고 , 잘 변하지 않는 것부터 시작하기 핵심 사용자 시나리오 정하기 가변요소 ex)회원정보를 어떻게 저장할 것인지 , 회원가입 괒어이 몇 페이지에 걸쳐서 이루워 질지.. 이런 것처럼 코드 작성 시 변할 수 있는 것들 비교적 불변요소 ex)회원에게 어떤 정보를 꼭 받아야 하는지 , 회원과 비회원의 차이는 무엇인지.. 문과적인 감성이 들어간 코드 작...
-디디디!!!란 도메인 주도 설계 이론 즉, DDD를 말한다. -DDD : Domain Driven Design이라고 불린다. 이는 도메인을 우선적으로 설계를 시작하는 것을 말한다. DDD DDD에 대해서 -Eric Evans가 2003년에 만들었다. -새로운 개발 / 설계 개념에 많은 영향을 끼쳤다. -특정 디자인 패턴이 보다 잘 활용될 수 있는 ...
-DDD를 실제로 해보는 방법은 다음과 같다. 1.DDD : 말그대로 DDD를 실제로 구현하는것 사용하는 경우 복잡한 트랜잭션(최소한의 로직 단위)이 들어가는 앱 -복잡한 트랜잭션이 앱 내부에 들어가는 경우를 말한다. DDD를 사용하면 복잡성을 다룰 수 있고 모델링하는데 도움이 되도록 만든 것이므로 비즈니스 적인 요구사항에 알맞게 코들르 작성 할 수 있...
#Data Layer Android Developer 공식문서 => https://developer.android.com/topic/architecture/data-layer?hl=ko Repository Pattern -도메인 계층에서 필요한 기능만 제공 -데이터 방식이 설계에 영향을 미치는 걸 막아줄 수 있도록 가장 상위레벨에서 지켜주는 수문장이라고...
-"의존성"이란 어떤 대상이 참조하는 객체 또는 메서드를 의미한다. Car는 Engine에 의존하고 있다. Car Class 입장에서 Engine은 의존성이 되는 것이다. -"의존성 주입"이란 대상 객체에 의존성을 제공하는 기술을 의미한다. Engine 인스턴스를 생성하는 책임을 갖고 있다. -위 코드에서 의존성을 없애는 방법 이렇게 파라미터로 En...
Hilt -Hilt란 안드로이드에서 사용할 수 있는 표준적인 DI 솔루션을 제공해준다. -Dagger2 기반으로 위에 Layer를 하나 더 쌓아서 만든 라이브러리이다. Hilt의 등장 배경 -Hilt 이전에는 수동으로 의존성을 주입하거나 개인 또는 회사에서 만든 개별적인 라이브러리를 사용하거나 Dagger를 사용하였다. -Guice -> Dagger2...
#Hilt Android Developer 공식 문서 =>https://developer.android.com/training/dependency-injection/hilt-android?hl=ko #Hilt 공식문서 =>https://dagger.dev/hilt/application 의존성 추가하기 프로젝트 수준의 build.gradle에 의존성 추가...
Annotation Processor 원리 -Hilt는 Annotation을 기반으로 동작을 한다. Hilt의 주요 Annotation -@HiltAndroidApp -@AndroidEntryPoint -@Module -@InstallIn -@HiltViewModel Annotation이란 -JDK1.5부터 사용되기 시작하였으며 소스코드를 해치지 않으면서...
Hilt 계층 구조 -Hilt는 표준 컴포넌트를 제공하기 때문에 개발자가 직접 컴포넌트를 정의하지는 않는다. 굳이 하겠다면 custom 컴포넌트를 정의하려면 정의 할 수 있기는 하지만 굳이 사용 안한다. -각 컴포넌트 계층 이미지에 보이는 각각의 Component의 명칭 위에 있는 ???Scoped 어노테이션은 해당 컴포넌트의 생명주기에 대한 의존성범위...
-의존성주입에 있어서의 관계의 구성요소는 두가지가 있다. 의존성을 요청하는 클라이언트와 의존성의 생명주기를 관리하고 클라이언트에게 의존성을 주입해주는 컨테이너 이렇게 두가지가 존재한다. -이를 Hilt에 적용하면 클라이언트는 안드로이드 클래스이고 , 컨테이너는 Hilt Component 이렇게 적용된다. 즉, 안드로이드 클래스가 Hilt Component...
-의존성이 Hilt Component에 바인딩이 될 때 Hilt는 어떠한 의존성을 식별 할 수 있는 식별자로 클래스의 패키지 명을 포함하고 있는 시그니처를 식별자로 활용하게 된다. -어떤 의존성이 Hilt Component에 바인딩이 되었을 때 바인딩 된 의존성을 클라이언트에서 요청하면 , Hilt가 어떠한 의존성을 요청했는지 구분 할 수 있는 이유는 어...
-일반적으로는 객체가 Hilt Component에 바인딩이 되고 , 클라이언트가 Hilt Component에게 바인딩 된 의존성을 주입해달라고 요청을 하는 과정을 통해서 클래스가 의존성을 주입받게 된다. -그렇다면 Lazy -Lazy 키워드를 사용하면 의존성이 주입되는 시기가 늦춰진다고 생각할 수 있지만 사실은 그렇지 않다. Lazy 키워드를 사용하여도...
-Hilt에서 의미하는 바인딩이란 어떠한 의존성을 Hilt Component에 추가 하는 행위 또는 해당 의존성을 일컫는 용어를 의미한다. 바인딩하는 방법 @Inject(생성자) -@Inject는 의존성을 요청할 때에만 사용되는 것이 아니라 생성자에 마킹함으로서 해당 객체에 대한 의존성을 주입받을 뿐만 아니라 바인딩 또한 함께 실행된다. @Provide...
-AndroidDeveloper 공식문서 =>https://developer.android.com/topic/modularization?hl=ko -앱의 규모가 커지면 필연적으로 기능별 , 계층별로 모듈을 분리할 필요가 생긴다. 이렇게 모듈을 분리하는 것이 실질적으로 앱의 아키텍처에 어떻게 영향을 미치고 개선 될 수 있을지 아는 것은 중요하다. -모듈을...
MVVM 패턴MVVM 패턴은 Model View ViewModel의 앞글자를 딴채로 흔히 불려지는 단어이다.MVVM 패턴이 뭔지 모르고 저가 몰라도 개발 쌉가능인데 왜 유난떨지라고 생각하던 시절에 만들었던 앱을 시간이 지나고 보니 왜 MVVM이 개발자 세상에 등장한지
Hilt는 제가 처음으로 접한 의존성 주입 라이브러리 입니다.일단 Hilt , Koin , Dagger2 이런 것들을 의존성 라이브러리라고 하는데 의존성을 주입한다는 것이 어떠한 의미일까요 ? 제가 생각하는 의존성이란 객체를 생성하는 것 이라고 생각합니다.일단 임의의
https://developer.android.com/topic/libraries/architecture/livedata?hl=ko아래 설명은 MVVM 패턴에서 LiveData를 사용한다는 전제에서 작성되었습니다. Live Data는 안드로이드 플랫폼에 종속적
기존에는 SQlite를 사용하였으나 Room 라이브러리 데이터 그래프의 변경에 영향을 받는 쿼리를 수동으로 업데이트 해야하는 등의 여러 이유들로 인해서 RoomDB의 사용을 권장합니다.안드로이드 스튜디오에서는 로컬에서 데이터를 관리하는 라이브러리들이 존재한다. Shar