안드로이드/개발 관련
[Kotlin] 안드로이드 코루틴(Coroutine) 사용해보기.
Android의 Kotlin 코루틴 | Android 개발자 | Android Developers Android의 Kotlin 코루틴 코루틴은 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴입니다. 코루틴은 Kotlin 버전 1.3에 추가되었으며 다른 언어에서 확 developer.android.com 코루틴은 경량 스레드처럼 사용할 수 있는 단위이다. 하나의 프로세스 내부에 여러 개의 스레드가 존재할 수 있고, 하나의 스레드 내부에 여러 개의 코루틴이 존재할 수 있다. 코루틴은 비동기 작업을 효율적으로 처리할 수 있도록 해주며 이점은 다음과 같다. 실행중인 스레드를 Block하지 않으므로 스레드 내에서 여러 개의 많은 코루틴을 실행할 수 있다. -> ..
[Kotlin] 페이징 3.0 라이브러리 사용해보기 + 로딩 기능도 사용해보기(그리드 레이아웃에서 로딩 가운데에 표시해보기.)
페이징 라이브러리 개요 | Android 개발자 | Android Developers 페이징 라이브러리 개요 Android Jetpack의 구성요소 페이징 라이브러리를 사용하면 로컬 저장소에서나 네트워크를 통해 대규모 데이터 세트의 데이터 페이지를 로드하고 표시할 수 있습니다. developer.android.com 안드로이드 개발을 하다보면, RecyclerView를 사용할 때가 많다. 그런데 네트워크 통신을 통해 List 형태의 데이터를 받아올 때 너무 많은 데이터를 한 번에 받아오도록 구현할 경우에는 로딩이 오래 걸리고, 사용자로 하여금 데이터를 많이 사용하도록 하게 된다. 이를 방지하기 위해 Server의 API에서 페이지 번호를 나누어서 내려주게 되는데, 안드로이드에서는 이것을 받기 위해 예전에..
Reactive Programming(반응형 프로그래밍)과 RxJava와 LiveData 비교. (Observer 패턴) 간단하게 살펴보기
C++, Java로 코드를 짤 때에 순차적으로 진행되는 코드를 Imperative Programming (명령형 프로그래밍)이라고 한다. 명령형 프로그래밍의 안드로이드를 예시로 들어보겠다. (극단적인 예시) 회원의 정보를 나타내는 TextView들이 있고, 회원의 정보를 불러온 후 이 정보를 TextView에 나타내기 위해서는 TextView가 회원의 정보를 일일이 나타내도록 TextView에 text를 설정해주어야 한다. 만일 회원의 정보를 불러온 후 바로 View들이 회원의 정보가 불러와진 것을 알고 Update될 수 있다면? 이를 위해 등장한 것이 Reactive Programming, 반응형 프로그래밍이다. Reactive Programming (반응형 프로그래밍) 반응형 프로그래밍은 코드의 영향..
[Kotlin] 안드로이드 AAC ViewModel과 앱 아키텍처 가이드 (feat. SharedPreferences) - 여러 Fragment에서 AAC ViewModel 공유해서 사용하기.
ViewModel 개요 | Android 개발자 | Android Developers ViewModel을 사용하면 수명 주기를 인식하는 방식으로 UI 데이터를 관리할 수 있습니다. developer.android.com 앱 아키텍처 가이드 | Android 개발자 | Android Developers 앱 아키텍처 가이드 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함되어 있습니다. 이 페이지는 Android 프레임워크 기본을 잘 아는 사용자를 대상으로 합 developer.android.com AAC ViewModel은 Android Architecture Components ViewModel로 Android Jetpack의 구성요소이다. 예전에 다른 글에서 AAC V..
[Kotlin] 안드로이드 디자인 패턴 예시 프로젝트 - MVC, MVP, MVVM (같은 기능, 다른 코드로 살펴보기.)
앱 아키텍처 가이드 | Android 개발자 | Android Developers 앱 아키텍처 가이드 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함되어 있습니다. 이 페이지는 Android 프레임워크 기본을 잘 아는 사용자를 대상으로 합 developer.android.com 안드로이드에서는 사용하는 디자인 패턴들이 여러 가지가 있다. 예전에는 대표적인 디자인 패턴이 MVC (Model - View - Controller)였는데, 요새는 MVVM (Model - View - ViewModel)인 것 같다. MVP (Model - View - Presenter) 패턴은 잘 못 본것 같은데, 우아한 형제들에서 런칭중인 배달의 민족 앱은 MVP + Repository 디자..
[Kotlin] 안드로이드 AAC ViewModel을 Fragment에서 사용 시, LiveData Observe가 두 번 되는 현상 해결법. (Owner, Event Wrapper)
MVVM 디자인 패턴의 예제 프로젝트를 만들던 도중에 다음과 버그가 일어났다. 화면을 먼저 살펴보자. 메인화면과 MVVM 버튼을 눌렀을 때 화면전환이 된 모습이다. 실제로 Room DB / Retrofit2 & OkHttp 와 같은 DB를 접근해서 가져오는 것은 아니고, 특정 클래스에 미리 담아놓은 값들을 가져오는 것이다. 해당 화면에서 AAC ViewModel, LiveData를 사용해서 수정 완료 버튼을 누르면 AAC ViewModel이 Repository를 통해서 값을 수정하게 되는 로직이다. 코드는 조만간 정리될 디자인 패턴 정리 글에 의해 올려질 예정이지만 잠깐 살펴보자면, 모델 클래스 /** * Design Pattern에서 Model이란, Data를 포함해서 Data를 송, 수신하는 모든 행..
[Kotlin] 안드로이드 AAC ViewModel을 MVVM패턴을 적용해서 Room DB를 사용해서 로컬 DB 저장해 보기. (부제 : 메모 저장 앱 만들기) (+@, TypeConverter 사용)
Room을 사용하여 로컬 데이터베이스에 데이터 저장 | Android 개발자 | Android Developers Room 라이브러리를 사용하여 더 쉽게 데이터를 유지하는 방법 알아보기 developer.android.com Room | Android 개발자 | Android Developers Room Room 지속성 라이브러리는 SQLite에 추상화 레이어를 제공하여 SQLite를 완벽히 활용하면서 더 견고한 데이터베이스 액세스를 가능하게 합니다. 최근 업데이트 현재 안정화 버전 다음 버전 후보 developer.android.com Room은 SQLite를 활용하는 데이터 베이스이다. 위 링크에서는 다음과 같이 설명하고 있다. 상당한 양의 구조화된 데이터를 처리하는 앱은 데이터를 로컬로 유지하여 대..
[Kotlin] 안드로이드 AAC ViewModel을 MVVM패턴을 적용해서 Retrofit2 / Okhttp3 사용해서 Solved.ac API 호출해보기. (백준 정보 가져오기) (+@ Glide를 View Binding에서 사용해보기)
@solvedac/unofficial-documentation 이 프로젝트는 solved.ac API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solvedac.github.io 이번에 사용해 볼 API는 위에 기록되어 있다. solved.ac에서 사용하는 API이며, user에 있는 사용자 정보 가져오기 API를 호출해 볼 것이다. 2021년 11월 25일 기준으로 작동하는 API이며, 원작자의 요청에 따라 언제든 지워질 수 있고, 수정될 수 있다. 사용자 정보와 이미지를 불러와서 띄워볼 것이다. 위와같은 정보들이 불러와진다. AAC ViewModel이란? MVVM에서의 ViewMode..
[Kotlin] 안드로이드 웹 뷰 사용해보기 (+@ 다이얼로그로 웹 뷰 띄워보기, 프래그먼트로 웹 뷰 띄워보기)
WebView | Android Developers developer.android.com WebView에서 웹 앱 빌드 | Android 개발자 | Android Developers WebView에서 웹 앱 빌드 웹 애플리케이션 또는 웹페이지만 클라이언트 애플리케이션의 일부로 제공하려는 경우 WebView를 사용하면 됩니다. WebView 클래스는 Android의 View 클래스의 확장으로, 웹페이 developer.android.com 웹 뷰는 앱에서 웹 페이지 화면을 띄우는 기능이다. 오늘은 웹 뷰 기능을 이용해서 EditText에 URL을 입력하고 인터넷 화면을 세 가지 방법으로 띄워볼 것이다. 레이아웃 파일에 메인 액티비티, 메인 프래그먼트 파일이 하나씩 있다. activity_main.xml ..
[Kotlin] 안드로이드 인스타그램 스토리 공유하기 기능 사용해보기. (예제 프로젝트)
스토리에 공유하기 - Instagram 플랫폼 - 문서 - Facebook for Developers 개요 Android 암시적 인텐트 및 iOS 맞춤 URL 스키마를 사용하면 앱에서 사진, 동영상과 스티커를 Instagram 앱으로 보낼 수 있습니다. Instagram 앱이 해당 콘텐츠를 받아서 스토리 작성기에 읽어들이면 developers.facebook.com 가끔 화면에서 특정 화면을 인스타그램 스토리에 공유하는 기능을 본 적이 있을 것이다. 예를 들자면, 멜론에서 음악을 듣는 화면을 공유하는 것이 그 예시이다. 오늘은 이 기능을 구현한 예제 프로젝트를 정리해볼 것이다. 위 링크를 가면 Android 개발자를 위해 설명해 놓은 글들이 있다. 암시적 인텐트를 사용 배경 레이어, 스티커 레이어 존재...