전체 글
-
[Android] Room 사용법안드로이드 2022. 3. 16. 20:43
Room이란? 스마트폰 내장 DB에 상당한 양의 구조화된 데이터를 저장하기 위해 사용하는 라이브러리입니다. ORM(Object Relational Mapping) 라이브러리로서 DB 데이터를 Java 또는 Kotlin 객체로 매핑해줍니다. Room은 SQLite를 내부적으로 사용하지만, DB를 구조적으로 분리하여 데이터 접근의 편의성을 높여주고 유지보수에 편리합니다. 또한, 다양한 Annotation을 통해 컴파일 시 코드들을 자동으로 만들어주며 LiveData, RxJava와 같은 Observation 형태를 지원하고 MVP, MVVM과 같은 아키텍처 패턴에 쉽게 활용할 수 있도록 되어 있습니다. SQLite 대신 Room을 사용하는 이유‼️ 위에 나오는 안드로이드 문서에서처럼 SQLite는 쿼리의 컴..
-
[Android] ItemTouchHelper란안드로이드 2022. 3. 11. 16:07
ItemTouchHelper란🤷🏻♂️ ItemTouchHelper는 RecyclerView에 삭제를 위한 스와이프 및 드래그 앤 드롭을 지원하는 유틸리티 클래스입니다. ItemTouchHelper는 사용자가 액션을 수행할 때 이벤트를 수신하는 RecyclerView 및 이벤트에 반응하는 콜백 메서드가 선언되어있는 Callback 클래스와 함께 사용합니다. 즉, 구조적으로 RecyclerView와 ItemTouchHelper.Callback을 ItemTouchHelper가 연결시켜주는 것입니다. 주요 메소드 attachToRecyclerView(RecyclerView) : ItemTouchHelper를 제공된 RecyclerView에 붙입니다. ItemTouchHelper.Callback 이 클래스는 앱..
-
[Android] Retrofit 쉼표로 구분된 값을 하나의 파라미터로 전송해야 할 때 (ID =1,2,3,4,5)안드로이드 2022. 3. 10. 16:43
@GET("/data") suspend fun getSomething( @Query("id") id1 : String,id2:String,id3:String ) : Observable 위와 같이 하나의 파라미터 안에 배열이나 리스트가 아닌 쉼표로 구분된 값을 전송해야 할 때 다음과 같이 작성하면 됩니다‼️ @GET("/data") suspend fun getSomething( @Query("id",encoded = true) appId : String? ) : Observable 위와 같이 쉼표로 구분된 값을 하나의 문자열로 넘겨주면 됩니다. fun getServicesId(services: ArrayList): String? { var serviceName = "" services.forEach { s..
-
[Android] 안드로이드 View 성능 올리는 꿀팁 feat.Naver Tech Concert 2020안드로이드 2022. 3. 8. 15:27
안드로이드 내부에서 일어나는 일들 🔍 (feat. 렌더링) 프레임 : 정지된 하나의 화면 또는 이미지 렌더링 : 하나의 프레임을 그려내는 과정 프레임 레이트 : 1초에 볼 수 있는 프레임(이미지)의 개수, 단위는 fps 안드로이드 화면은 60 fps를 유지해야 부드럽고 빠른 앱이라고 인지합니다. 앱이 버벅거리는 이유‼️ 앱은 16ms 이내에 화면을 갱신해야 합니다.(1000ms / 60 Frames = 16.666ms/frame) 16ms이내에 화면을 갱신하지 못한다면 프레임 드롭 발생 -> 마치 화면이 멈춘 것처럼 보이며 사용자 입장에서는 버벅거린다고 느낍니다. View에서 성능을 개선할 만한 부분👍🏻 1. overDraw를 줄이기 overDraw란 같은 픽셀에 여러 번 덧 칠하는 것을 의미합니다. o..
-
[Android] RecyclerView 사용법안드로이드 2022. 3. 5. 21:17
RecyclerView란 Android에서 List형태로 구성하고 싶을 때 사용하는 View입니다. 기존의 ListView는 커스텀하기에는 구조적인 문제로 많은 제약이 따랐으며, 구조적인 문제로 인해 성능 문제가 있었습니다. ViewHolder 패턴을 활용해 View를 재활용해 사용할 수 있어 메모리 관리에 매우 효율적입니다. 🔥 RecyclerView의 재활용성♻️ ListView와는 다르게 RecyclerView는 사용자가 스크롤 할 때마다 맨 위에 위치한 뷰 객체를 삭제하지 않고 아래쪽에서 새로 나타날 파란색 뷰 위치로 객체를 이동시킵니다. 즉 뷰 객체 자체를 재사용하는 것인데, 중요한 점은 뷰 객체를 재사용할 뿐이지 뷰 객체가 담고 있는 데이터는 새로 갱신되는 것이므로 효율적입니다. 주요 클래스👀..
-
[Android] LiveData란안드로이드 2022. 2. 24. 12:41
LiveData란👀 LiveData는 Data의 변경을 관찰할 수 있는 데이터 홀더 클래스입니다. 일반적인 Observable과는 달리 LiveData는 안드로이드 LifeCycle을 따르고 있습니다. 여기서 LifeCycle은 Activity, Fragment, Service 등과 같은 안드로이드 컴포넌트의 LifeCycle을 인식합니다. 이에 따라 LiveData는 해당 컴포넌트의 LifeCycle의 상태가 ACTIVE(STARTED or RESUMED) 일 때만 데이터를 업데이트합니다. LiveData 객체는 Observer 객체와 함께 사용되어 LiveData가 가지고 있는 데이터에 어떤 변화가 감지되면 LiveData는 Observer객체에 변화를 알리고 Observer의 onChanged메서드..
-
[Android]Glide 라이브러리를 통해 이미지 Load하기안드로이드 2022. 2. 11. 12:37
안드로이드 개발을 할 때 이미지를 띄우고자 할때, 여러 방법이 있습니다. 1. 안드로이드 프로젝트의 drawable폴더의 리소스를 보여주는 경우 2. 안드로이드 디바이스 안에 저장되어있는 사진(갤러리 등)을 보여주는 경우 3. 이미지 URL을 로드해서 보여주고자 하는 경우 Glide란‼️ Glide는 위와 같은 3가지 방법들을 안드로이드에서 이미지를 빠르고 효율적으로 불러올 수 있게 도와주는 라이브러리입니다. 이미지, GIF,비디오 스틸의 로딩과 디코딩, 캐싱 등의 다양한 API를 사용할 수 있습니다. 기본적으로 커스텀하게 만들어진 HttpUrlConnection 기반이지만, Volley나 okHttp 라이브러리를 사용할 수 있는 플러그인도 지원합니다. Glide 사용 방법 1. build.gradle(..
-
[Android] Android Context란?안드로이드 2022. 2. 7. 13:30
안드로이드 개발을 하다 보면 Parameter로 Context를 빈번하게 넘겨주게 됩니다. 하지만 이 Context가 뭔지도 모르고서 계속 사용하다가 Context를 잘못 사용 시 메모리 누수가 쉽게 발생하게 됩니다.🤦🏻♂️ 그래서 Context가 무엇인지, 어떻게 사용해야 하는지에 대해서 알아보았습니다. Context란 애플리케이션의 현재 상태 Activity와 Application에 대한 정보를 얻는 데 사용 Resource, Database 및 Shared Preference에 대한 액세스 권한을 얻는 데 사용할 수 있다. Activity 및 Application 클래스 모두 Context 클래스 확장한 클래스 Context의 종류 Application Context : 싱글톤 인스턴스이며 get..