Android
-
🤔 SQLite? 앱의 데이터를 효율적으로 관리하기 위한 저장소 (로컬 데이터베이스) 소규모 데이터를 관리하고 사용하는데 적합한 관계형 데이터 베이스로, RDB형식(액셀 형태, 행과 열 ) 로 데이터를 저장한다. 속도가 빠르고 가볍다는 장점 이전 프로젝트에서 SQLite를 사용하여 프로젝트를 진행해왔습니다. 하지만 아래와 같은 이유로 인해 SQLite 보다 Jetpack 라이브러리에 포함된 Room을 사용을 권장하고 있습니다. 구글에서는 이러한 문제를 해결하고자 새롭게 Room Database Library를 배포하였습니다. 😮 Room? SQLite 데이터베이스를 쉽고 편리하게 사용할 수 있도록 하는 ORM 라이브러리 ORM은 또 뭐야? (Object-Relational Mapping) ORM이란, O..
[Android] Local Database(SQLite, Room)🤔 SQLite? 앱의 데이터를 효율적으로 관리하기 위한 저장소 (로컬 데이터베이스) 소규모 데이터를 관리하고 사용하는데 적합한 관계형 데이터 베이스로, RDB형식(액셀 형태, 행과 열 ) 로 데이터를 저장한다. 속도가 빠르고 가볍다는 장점 이전 프로젝트에서 SQLite를 사용하여 프로젝트를 진행해왔습니다. 하지만 아래와 같은 이유로 인해 SQLite 보다 Jetpack 라이브러리에 포함된 Room을 사용을 권장하고 있습니다. 구글에서는 이러한 문제를 해결하고자 새롭게 Room Database Library를 배포하였습니다. 😮 Room? SQLite 데이터베이스를 쉽고 편리하게 사용할 수 있도록 하는 ORM 라이브러리 ORM은 또 뭐야? (Object-Relational Mapping) ORM이란, O..
2023.09.12 -
안드로이드의 UI 동작 안드로이드는 기본적으로 Main Thread (or UI Thread) 하나만으로 구성되는 싱글 쓰레드 모델로 동작한다. 🤔싱글 쓰레드 모델인 이유 만약 멀티 쓰레드 환경이라면, 여러 쓰레드에서 TextView 의 텍스트를 변경하는 상황이 발생하고 어떤 결과가 나타날 지 미지수이기 때문이다. 따라서 동작의 무결성을 보장하기 위해 타 쓰레드에서는 UI 를 건드릴 수 없고, 오로지 메인 쓰레드에서만 UI 관련 동작을 할 수 있게끔 하는 것이다. ✍🏼싱글 쓰레드 모델에서 지켜야할 포인트들 1. 메인 쓰레드 (UI 스레드) 를 블로킹해서는 안 됨 → 메인 쓰레드를 블로킹한다는 뜻은, 사용자에게 보여지는 UI 동작을 멈춘다는 뜻이다. 메인 쓰레드가 블로킹되어 UI 동작이 멈추게 되면, 이는..
[android] Handler & Looper안드로이드의 UI 동작 안드로이드는 기본적으로 Main Thread (or UI Thread) 하나만으로 구성되는 싱글 쓰레드 모델로 동작한다. 🤔싱글 쓰레드 모델인 이유 만약 멀티 쓰레드 환경이라면, 여러 쓰레드에서 TextView 의 텍스트를 변경하는 상황이 발생하고 어떤 결과가 나타날 지 미지수이기 때문이다. 따라서 동작의 무결성을 보장하기 위해 타 쓰레드에서는 UI 를 건드릴 수 없고, 오로지 메인 쓰레드에서만 UI 관련 동작을 할 수 있게끔 하는 것이다. ✍🏼싱글 쓰레드 모델에서 지켜야할 포인트들 1. 메인 쓰레드 (UI 스레드) 를 블로킹해서는 안 됨 → 메인 쓰레드를 블로킹한다는 뜻은, 사용자에게 보여지는 UI 동작을 멈춘다는 뜻이다. 메인 쓰레드가 블로킹되어 UI 동작이 멈추게 되면, 이는..
2023.07.24 -
1. Service란? 서비스란, 안드로이드 4대 컴포넌트 중 하나이며, 사용자에게 인터페이스를 제공하지 않고 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소 다른 애플리케이션 구성 요소가 서비스를 시작할 수 있고, 다른 앱을 전환하더라도 백그라운드에서 계속 실행된다. 또한 앱 구성요소와 서비스를 바인딩하여 서비스와 상호작용 할 수 있고, 프로세스 간 통신(IPC)도 실행할 수 있다. 2. Service는 언제 사용할까? • 액티비티와 상관 없이 백그라운드에서 동작하는 component • 서버로부터 contents(파일) 다운로드 • 음악 재생 • DB에 저장 • Wi-Fi, BLE 연결 등등 3. Service 종류 포그라운드 서비스: 알림창을 통해 서비스가 실행중인 것을 ..
[android] android service?1. Service란? 서비스란, 안드로이드 4대 컴포넌트 중 하나이며, 사용자에게 인터페이스를 제공하지 않고 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소 다른 애플리케이션 구성 요소가 서비스를 시작할 수 있고, 다른 앱을 전환하더라도 백그라운드에서 계속 실행된다. 또한 앱 구성요소와 서비스를 바인딩하여 서비스와 상호작용 할 수 있고, 프로세스 간 통신(IPC)도 실행할 수 있다. 2. Service는 언제 사용할까? • 액티비티와 상관 없이 백그라운드에서 동작하는 component • 서버로부터 contents(파일) 다운로드 • 음악 재생 • DB에 저장 • Wi-Fi, BLE 연결 등등 3. Service 종류 포그라운드 서비스: 알림창을 통해 서비스가 실행중인 것을 ..
2023.07.21 -
ViewBinding, DataBinding을 알아보기 전 이 그림을 보자. Databinding이 ViewBinding의 역할도 해주고 있네?? 근데 왜 ViewBinding에 대해서도 알아야하는거지?라고 생각할 수도 있다. 그 이유에 대해서 알아보겠다. ViewBinding? 1) ViewBinding 사용하게 된 이유 기존에는 xml에 있는 textview를 참조하기 위해 findViewById를 사용하여 접근하였다. val textview = findViewById(R.id.tv) textview.text = "입력" findViewById를 사용하여 접근하려면 참조할 때마다 하나씩 선언해주어 참조해야하는데 매우 번거롭다. 또한 findViewById는 Null값을 처리하지 못하여 Null poi..
[android] ViewBinding vs DataBinding ?ViewBinding, DataBinding을 알아보기 전 이 그림을 보자. Databinding이 ViewBinding의 역할도 해주고 있네?? 근데 왜 ViewBinding에 대해서도 알아야하는거지?라고 생각할 수도 있다. 그 이유에 대해서 알아보겠다. ViewBinding? 1) ViewBinding 사용하게 된 이유 기존에는 xml에 있는 textview를 참조하기 위해 findViewById를 사용하여 접근하였다. val textview = findViewById(R.id.tv) textview.text = "입력" findViewById를 사용하여 접근하려면 참조할 때마다 하나씩 선언해주어 참조해야하는데 매우 번거롭다. 또한 findViewById는 Null값을 처리하지 못하여 Null poi..
2023.07.12 -
이 그림은 안드로이드 공식문서에서 가져온 그림이다. 앱을 설계할 때 UI와 관련된 데이터는 ViewModel + LiveData로 관리하도록 권장하고 있다. 이번 게시글은 LiveData에 대해 이야기해보겠다. LiveData 는 Observer 패턴을 활용하여, Lifecycle 에 따르며 데이터를 관리 이름 그대로 '실시간' 그 자체의 데이터, 즉 항상 최신 데이터를 보증한다는 특징이 있다. Observer? 위에서 말한 observer가 무엇인지 궁금할 수 있다. 나는 livedata를 몰랐을 때는 데이터를 일일이 UI에 업데이트 해주었다..(이건 클린 아키텍처가 아니다.) 그렇다면 매번 데이터를 관찰해주는 관찰자 역할이 있다면 어떨까? 안드로이드에서 Observer가 그런 개념이다. 데이터가 변경..
[android] Livedata란? (feat.ViewModel)이 그림은 안드로이드 공식문서에서 가져온 그림이다. 앱을 설계할 때 UI와 관련된 데이터는 ViewModel + LiveData로 관리하도록 권장하고 있다. 이번 게시글은 LiveData에 대해 이야기해보겠다. LiveData 는 Observer 패턴을 활용하여, Lifecycle 에 따르며 데이터를 관리 이름 그대로 '실시간' 그 자체의 데이터, 즉 항상 최신 데이터를 보증한다는 특징이 있다. Observer? 위에서 말한 observer가 무엇인지 궁금할 수 있다. 나는 livedata를 몰랐을 때는 데이터를 일일이 UI에 업데이트 해주었다..(이건 클린 아키텍처가 아니다.) 그렇다면 매번 데이터를 관찰해주는 관찰자 역할이 있다면 어떨까? 안드로이드에서 Observer가 그런 개념이다. 데이터가 변경..
2023.07.09 -
레트로핏을 활용하여 서버에서 받은 응답 리스트 개수에 따라서 동적으로 레이아웃을 설정해주려고 한다. acativity_main.xml 레이아웃을 추가 할 부모 레이아웃을 먼저 만들어줍니다. 부모 레이아웃은 id는 petLayout으로 설정했습니다. activity_sub.xml SubActivity는 부모 레이아웃안에 동적으로 생성할 레이아웃을 정의해줍니다. id는 childPetLayout으로 설정했습니다. MainActivity.Kt 파일 서버에서 응답 받은 결과 개수에 따라 for문을 반복합니다. 데이터를 0번째부터 받은 뒤 createLayout이라는 함수에 데이터를 보내주어 레이아웃을 생성하면서 그 레이아웃에 받아온 데이터를 입력해준다. petLayout.addView(createLayout) ..
[android] 동적으로 레이아웃 생성하기 with Kotlin레트로핏을 활용하여 서버에서 받은 응답 리스트 개수에 따라서 동적으로 레이아웃을 설정해주려고 한다. acativity_main.xml 레이아웃을 추가 할 부모 레이아웃을 먼저 만들어줍니다. 부모 레이아웃은 id는 petLayout으로 설정했습니다. activity_sub.xml SubActivity는 부모 레이아웃안에 동적으로 생성할 레이아웃을 정의해줍니다. id는 childPetLayout으로 설정했습니다. MainActivity.Kt 파일 서버에서 응답 받은 결과 개수에 따라 for문을 반복합니다. 데이터를 0번째부터 받은 뒤 createLayout이라는 함수에 데이터를 보내주어 레이아웃을 생성하면서 그 레이아웃에 받아온 데이터를 입력해준다. petLayout.addView(createLayout) ..
2023.05.16 -
Retrofit이란? Retrofit은 Square에서 개발한 Android, Java 및 Kotlin용 유형 안전 REST 클라이언트입니다. 라이브러리는 API를 인증 및 상호 작용하고, OkHttp를 사용하여 네트워크 요청을 보내기 위한 강력한 프레임워크를 제공합니다. 안드로이드 애플리케이션 통신 기능에 사용하는 코드를 사용하기 쉽게 만들어놓은 라이브러리로, REST 기반의 웹 서비스를 통해 JSON 구조의 데이터를 쉽게 가져오고 업로드 할 수 있습니다. -> 네트워크로부터 전달된 데이터를 필요한 형태의 객체로 받을 수 있는 라이브러리 레트로핏은 "REST API를 이용하여 JSON과 같은 데이터를 받아올 때 사용하기 좋다. "
[Android] retrofit 레트로핏이란?🔎Retrofit이란? Retrofit은 Square에서 개발한 Android, Java 및 Kotlin용 유형 안전 REST 클라이언트입니다. 라이브러리는 API를 인증 및 상호 작용하고, OkHttp를 사용하여 네트워크 요청을 보내기 위한 강력한 프레임워크를 제공합니다. 안드로이드 애플리케이션 통신 기능에 사용하는 코드를 사용하기 쉽게 만들어놓은 라이브러리로, REST 기반의 웹 서비스를 통해 JSON 구조의 데이터를 쉽게 가져오고 업로드 할 수 있습니다. -> 네트워크로부터 전달된 데이터를 필요한 형태의 객체로 받을 수 있는 라이브러리 레트로핏은 "REST API를 이용하여 JSON과 같은 데이터를 받아올 때 사용하기 좋다. "
2023.02.08