728x90
반응형

Android 89

<강의> 안드로이드 앱 개발 심화 - Retrofit

1. Retrofit이란? Square Inc.에서 개발한 안드로이드 및 자바를 위한 타입-세이프한 HTTP 클라이언트 라이브러리 2. Retrofit의 목적 REST API의 HTTP 요청을 자바, 코틀린의 인터페이스로 변환하는 것 3. Retrofit의 장점 1) 좋은 성능 - OkHttp보다 3배 빠르다고 함 - 내부적으로 OkHttp 라이브러리를 사용하여 안정적인 통신을 함 - 인터셉터를 사용하여 요청/응답 프로세스를 확장하거나 수정할 수 있음 2) 좋은 가독성 - 복잡한 HTTP API 요청을 쉽고 간결하게 만들 수 있음 - 간단한 어노테이션을 통해 요청 메서드와 URL을 정의할 수 있음 3) 간단한 구현 - 다양한 데이터 타입에 대한 데이터 변환 컨버터 제공 - 비동기 프로그래밍 라이브러리와 ..

Android/StoreInfo 2024.01.25

<정리> 심화 개인과제 1

1. API 사용해서 데이터 받아오기 가장 먼저는 Kakao Developers에서 REST API Key를 받았다. 그리고나서부터 모든 과정이 어려웠다. Response로 오는 형태에 맞춰서 데이터 클래스를 구성했다. 정말 그대로 구성해야지 값이 들어온다고 해서 열심히 눈알 굴리면서 작성했다. @SerializedName을 붙이면 () 안에 들어가는 문자열으로 Gson이 인식한다고 하더라 데이터 받는 과정에 있었던 이슈로 인해서 모든 데이터 클래스의 변수에 붙어있지만 받아올 데이터의 이름과 다르게 하는게 아니면 안 붙여도 된다. data class SearchResponse( @SerializedName("documents") val documents: MutableList?, @SerializedNa..

Android/StoreInfo 2024.01.24

<강의> 안드로이드 앱 개발 심화 - 사용자 위치 얻기

1. 위치 접근 권한 protection level이 dangerous이기 때문에 사용자에게 권한을 요청하여 받아야함 1) android.permission.ACCESS_COARSE_LOCATION - 와이파이나 모바일 데이터 또는 둘 다를 사용해 기기의 위치에 접근하는 권한 2) android.permission.ACCESS_FINE_LOCATION - 위성, 와이파이, 모바일 데이터 등 이용할 수 있는 위치 제공자를 사용해 최대한 정확한 위치에 접근하는 권한 3) android.permission.ACCESS_BACKGROUND_LOCATION - 안드로이드 10(API 레벨 29) 이상에서 백그라운드 상태에서 위치에 접근하는 권한 2. LocationManager 사용자의 위치를 얻기 위해 사용하는..

Android/StoreInfo 2024.01.24

unresolved reference : BuildConfig 에러

제목에 써진 대로 에러가 발생했다. 현재 앱이 디버그 빌드인지 아닌지 판별하여 모든 네트워크 요청 및 응답을 로깅할지 말지를 정하려고 했는데 디버그 빌드인지 판별하는 BuildConfig가 계속 없다고 떴다. 시도해본 건 여러가지였다. 그리고 처음 해결한 방법은 그 모든 시도를 하나로 뭉치는 거였다. 1. build.gradle에서 buildFeatures에 buildConfig를 true로 설정 2. build.gradle에서 defaultConfig에 buildConfigField("String", "MODE", "FREE") 작성 3. gradle.properties에서 android.defaults.buildfeatures.buildconfig=true로 설정 4. Build -> Clean Pr..

Android/Errors 2024.01.23

<강의> 안드로이드 앱 개발 심화 - Room

1. Room이란? - SQLite를 쉽게 사용할 수 있는 데이터베이스 객체 매핑 라이브러리 - 쉽게 Query를 사용할 수 있는 API를 제공 - Query를 컴파일 시간에 검증 (SQLite보다 Room 사용을 권장하는 이유 중 하나) - Query 결과를 LiveData로 하여 데이터베이스가 변경될 때마다 쉽게 UI 변경 가능 2. Room의 주요 3요소 1) @Database(entities = [포함되는 Entity 리스트], version = Int형 숫자) - RoomDatabase를 상속받은 클래스를 데이터베이스로 지정하는 어노테이션 - version이 기존에 저장되어 있는 데이터베이스보다 높으면, 데이터베이스를 open할 때 Migration을 수행함 - Migration을 수행하는 방법..

Android/StoreInfo 2024.01.23

<강의> 안드로이드 앱 개발 심화 - SharedPreferences

1. SharedPreferences란? - 앱에서 데이터를 저장하는 방법 중 하나 - 간단한 데이터(설정 선택 정보)를 저장할 때 주로 사용 - XML 포맷의 텍스트 파일에 key-value 쌍으로 데이터를 저장 - 액티비티 간 공유하며, 한쪽에서 수정해도 다른쪽에서 수정된 데이터를 읽을 수 있음 - 저장된 데이터는 앱이 삭제되기 전까지 유지 - 외부에서는 읽을 수 없음 2. 공유 환경설정의 핸들 가져오기 1) getSharedPreferences(name, mode) - 이름으로 식별되는 여러개의 공유 환경설정 파일들이 필요한 경우 사용 - 애플리케이션의 모든 Context에서 호출 가능 - name : 데이터를 저장할 XML 파일의 이름 - mode : 파일의 공유 모드 > MODE_PRIVATE ..

Android/StoreInfo 2024.01.23

<정리> 챌린지반 과제2 - 2

저번까지 한 것에 이어서 선택과제였던 할일 등록 기능을 MVVM 패턴으로 구현하는 걸 혼자서 해보았다. 힌트에 기반하여 저번 코드에서 변경된 부분과 추가된 부분이 있다. [깃허브] https://github.com/heesoo-park/ChallengeRecruitAssignment/tree/week1_contain_MVVM 1. 할일 저장소 생성 각각의 프래그먼트에서 사용하던 더미데이터를 object 클래스인 DataStore로 모았다. 그리고 거기서 함수를 만들어 할일을 추가할 수 있도록 했다. object DataStore { private val totalTodoList: ArrayList = ArrayList() init { totalTodoList.add( Todo( "title 0", "de..

Android/StoreInfo 2024.01.23

<정리> 챌린지반 과제2 - 1

지금까지 회원가입 페이지에서 계속 덮어쓰던 과제가 마무리되고 드디어 새로운 과제가 시작되었다. 이번 과제는 회사 채용과제의 느낌을 가지고 있는 과제였고 처음으로 할 건 레이아웃을 짜는 거였다. 이전까지 했던 것들을 복습하는 느낌이었기에 레이아웃 짜는 건 금방이었다. 여기서 정리해볼건 만든 레이아웃을 화면에 띄울 때 했던 코드들이다. [깃허브] https://github.com/heesoo-park/ChallengeRecruitAssignment/tree/master 1. 데이터 클래스 생성 가장 먼저 데이터 클래스를 만들었다. Todo 앱을 만드는 것이기에 필요한 제목, 내용, 북마크 여부를 넣어서 만들었다. data class Todo( val title: String, val description: ..

Android/StoreInfo 2024.01.23

Facade Pattern에 대한 이해

1. 소개 일련의 저수준 인터페이스들을 하나의 고수준 인터페이스(통합 인터페이스)로 묶어주는 패턴 클라이언트 인터페이스 디자인을 위한 필수 패턴 고수준 인터페이스는 단순한 창구 역할을 한다. 클래스 구조가 정형화되지 않은 패턴 2. 사용 이유 일반적으로 저수준 인터페이스 여러개를 쓰게 되면 많은 객체에 강한 결합도(의존성)를 가지게 되는데 저수준 인터페이스들을 감싸는 고수준 인터페이스를 사용하면 결합도(의존성)가 많이 줄어들게 되기 때문에 사용한다. 인터페이스가 단순해질수록 문제가 줄어들고 코드도 간단해진다. 클라이언트가 사용할 때 복잡한 것을 의식하지 않도록 해준다. 3. 문제점 고수준 인터페이스가 복잡해진다는 것 유지보수 측면에서 볼 때 코드가 늘어난 것이기 때문에 비용이 더 든다. 4. 고려사항 각..

Android/StoreInfo 2024.01.22

<정리> 챌린지반 과제 5

오늘은 튜터님이 직접 오셨다. 그래서 진행도 말씀드리고 질문하고 나니까 이제는 지금 수준에서 마무리라고 해주셨다. 그래서 마지막으로 말해주시는 것만 반영했고 이를 정리해놓으려고 한다. 1. ViewModelFactory 뷰모델을 만들 때 파라미터를 넘겨줄 수 있는 뷰모델 팩토리를 만들었다. 이건 따로 파일을 만들어야했다. ViewModelProvider.Factory를 상속받는 뷰모델 팩토리 클래스를 만들었다. 그리고 안에 create함수를 오버라이딩했다. 제너릭 타입이 사용되는 걸 보고 매우 낯설었다. 그래도 이해하기에는 문제가 없었다. 뷰모델 팩토리로 값을 넘기고 그 값을 파라미터로 하는 뷰모델 객체의 인스턴스를 만드는 것..!! 나는 context, entryType, userEntity를 넘겼다...

Android/StoreInfo 2024.01.12
반응형