내부 상태를 갖는 컴포저블은 재사용 가능성이 적고 테스트하기가 더 어려운 경향이 있다.상태 호이스팅은 컴포저블을 스테이트리스(Stateless)로 만들기 위해 상태를 컴포저블의 호출자로 옮기는 패턴컴포저블이 가능한 한 적게 상태를 소유하고 적절한 경우 컴포저블의 API
이벤트 상태 업데이트상태 표시컴포저블을 실행할 때 Compose에서 빌드한 UI에 관한 설명을 컴포지션이라고 한다.컴포지션초기 컴포지션리컴포지션remember 과 mutableStateOf를 사용해 변수의 값을 메모리에 보관할 수 있다.리컴포지션이 되어도 그 값이 유지
사이트를 참고하여 Compose를 활용해 위의 UI를 구성해 보았다.BottomNavigation composable을 활용하고 그 안에 BottomNavigationItem을 선언하여 활용한다.손가락 버튼을 활용해서 Preview 화면에서도 스크롤 동작을 확인 할 수
https://youtu.be/fFLBCgoHHysCreate composables using the @Composable annotationIt's quick & easy to create composablesComposables accept paramete
기존의 안드로이드 UI 개발 방식인 XML 기반의 레이아웃과 달리 Compose는 Kotlin 언어를 기반으로 한 UI 작성 방식이다. Compose는 "Composable"이라 불리는 UI 구성 요소들을 조합하여 UI를 구성한다.XML을 작성하지 않아서 관리할 코드가
파이어베이스 서버에서 앱에 알림을 전달하는 기능이다.서버에서 어떤 상황이 발생할 때 클라이언트에 데이터를 전달하는 것을 서버 푸시라고 한다.클라우드 메시징은 서버의 데이터를 앱에 직접 전달하지 않고 FCM 서버를 거쳐 앱에 전달하는 방식이다.서버와 앱이 네트워크 연결을
파이어베이스 스토리지는 앱의 파일을 저장하는 기능을 제공한다.앱에서 사진을 서버에 올리고 내려받을 수 있다.뷰의 내용을 비트맵 -> 바이트값으로 변환 후 스토리지에 저장한다.스토리지의 파일을 내려받을 때는 getBytes()나 getFile() 함수를 이용한다.바이트값
파이어베이스는 파이어스토어 데이터베이스와 실시간 데이터베이스를 제공한다.파이어스토어 DB는 실시간 DB보다 더 많고 빠른 쿼리를 제공한다.NoSQL DB로, JSON형식으로 파일이 저장된다.
실제 존재하는 이메일을 등록하면 등록한 이메일로 인증 메일이 발송된다.이를 확인함으로써 인증을 처리하는 구조이다.인증을 거쳐 가입이 완료되면 인증 정보가 파이어베이스에 저장된다. 따라서 로그인할 때는 등록된 이메일 서버와 연동하지 않고 파이어베이스에서 처리한다.파이어베
매니페스트 설정은 아래와 같다activity_main.xmlMainActivity.ktGoogleMap.OnMapClickListener : 지도 클릭 이벤트GoogleMap.OnMapLongClickListener : 지도 롱 클릭 이벤트GoogleMap.OnMark
앱에서 사용자의 위치를 추적하려면 3가지권한을 얻어야 한다.android.permission.ACCESS_COARSE_LOCATION도시에서 1블록 정도의 오차 수준을 가진다.android.permission.ACCESS_FINE_LOCATION최대한 정확한 위치에 접
서버에서 이미지를 내려받을 때 Glide를 이용하면 Volley나 Retrofit보다 더 쉽고 빠르게 개발할 수 있다.Glide를 사용하려면 다음을 작성해야한다.load() 함수에 리소스를 전달하고, into()함수에 이미지 뷰 객체를 전달하면 리소스 이미지를 자동으로
스퀘어에서 만든 HTTP 통신을 간편하게 만들어 주는 라이브러리이다.동작 방식은 아래와 같다.통신용 함수를 선언한 인터페이스를 작성한다.Retrofit에 인터페이스를 전달한다.Retrofit이 통신용 서비스 객체를 반환한다.서비스의 통신용 함수를 호출 후 Call 객체
앱에서 네트워크 통신을 구현하려면 아래 퍼미션을 선언해야 한다.안드로이드 앱은 네트워크 통신을 할 때 기본으로 HTTPS 보안 프로토콜을 사용한다.일반 HTTPS 프로토콜로 통신하려면 특정 도메인만 허용하도록 선언해 줘야 한다.res/xml 폴더에 임의의 이름으로 XM
전화가 걸려오는 순간, 서비스 상태가 변경되는 순간을 감지하고 싶은 경우가 있다.스마트폰의 상태를 파악하는 방법은 두가지 존재한다.API레벨 31에서 deprecated 되었다.PhoneStateListener를 상속받은 클래스의 객체를 TelephonyManager에
플랫폼 API에서 제공하는 클래스로, 데이터를 키-값 형태로 저장할 때 사용한다.간단한 데이터를 저장하는데 유용하며, 내장 메모리의 앱 폴더에 XML 파일로 저장된다.getPreferences() 함수는 자동으로 이를 호출한 액티비티이름.xml 파일이 생성되고 데이터가
안드로이드 앱에서 파일을 다룰 때는 대부분 java.io 패키지에서 제공하는 클래스를 이용한다. File 파일 및 디렉터리를 지칭하는 클래스 FileInputStream / FileOutputStream 파일에서 바이트 스트림으로 데이터를 일걱나 쓰는 클래스 File
안드로이드 폰에서 시용하는 db관리 시스템은 SQLite이다.앱의 저장소에 파일로 저장하며, 외부 앱에서는 접근할 수 없다.질의문을 실행해야 할 때는 SQLiteDatabase 객체를 이용해야 한다.추가로 SQLiteOpenHelper 클래스를 이용하면 테이블을 생성,
퍼미션을 설정해야 한다.주소록의 목록 화면을 띄우는 코드이다.주소록 목록 화면은 인텐트를 이용해 실행한다.안드로이드에서 이미지는 Drawable이나 Bitmap 객체로 표현한다.BitMapFactory를 이용하면 작은 이미지를 불러오는 데는 문제 없지만 큰 이미지를 불
앱끼리 데이터를 연동하는 컴포넌트이다. 앱을 개발하면서 다른 앱의 데이터를 사용할 때 콘텐츠 프로바이더를 이용한다.ContentProvider 클래스를 상속받아서 작성한다.onCreate(), getType(), query(), insert(), update(), de