안드로이드 19

안드로이드 통신에 자주 사용하는 Retrofit 알아보기 (2) - create 뜯어보기

이전 글에서 이어집니다. https://sh1mj1-log.tistory.com/167 안드로이드 통신에 자주 사용하는 Retrofit 알아보기 (1) - HttpURLConnection, OkHttp, Retrofit 장점을 중심 Jwt 토큰 관련해서 프로젝트의 버그 픽스, 간단한 리팩토링(리팩토링이라고 하기도 뭐하지만) 을 진행하면서 이 김에 Retrofit 클래스의 내부 구조에 대해서 조금 이해를 해야 할 필요가 있을 것 같 sh1mj1-log.tistory.com 이번에는 Retrofit 을 사용해서 서버와 통신을 할 때 Retrofit 클래스 내부가 어떻게 구현이 되어 있는지에 대해 조금 더 자세히 알아보겠습니다. Retrofit 클래스 이전 글(안드로이드 통신에 ... Retrofit 장점을 ..

안드로이드 통신에 자주 사용하는 Retrofit 알아보기 (1) - HttpURLConnection, OkHttp, Retrofit 장점을 중심으로

Jwt 토큰 관련해서 프로젝트의 버그 픽스, 간단한 리팩토링(리팩토링이라고 하기도 뭐하지만) 을 진행하면서 이 김에 Retrofit 클래스의 내부 구조에 대해서 조금 이해를 해야 할 필요가 있을 것 같아 정리해보려고 합니다. 안드로이드 레트로핏 api 호출하는 인터페이스에서 @Header 중복을 제거하기 안드로이드 레트로핏 api 호출하는 인터페이스에서 @Header 중복을 제거하기 지난 4개월 전쯤 친구를 통해서 여러 다른 분들과 플레이스토어에 바바-BABA 라는 앱을 출시했습니다. 작성했던 코드들을 천천히 보면서 리팩토링 및 버그 픽스를 하며 공부를 더 해보려고 합니 sh1mj1-log.tistory.com APi 요청 시 Access Token 을 갱신해야 할 때 Refresh Token 으로 토큰..

안드로이드 레트로핏 api 호출하는 인터페이스에서 @Header 중복을 제거하기

지난 4개월 전쯤 친구를 통해서 여러 다른 분들과 플레이스토어에 바바-BABA 라는 앱을 출시했습니다. 작성했던 코드들을 천천히 보면서 리팩토링 및 버그 픽스를 하며 공부를 더 해보려고 합니다. 일단 오늘 볼 부분은 서버와 api 통신을 하는 부분인데요. 이 프로젝트에서는 Retrofit 을 사용했고, Di 는 Hilt 를 사용하였습니다. 서버와 api 통신을 하는 전체 구조 먼저 간단한 UML 을 통해 기존에 어떻게 서버 통신을 진행하고 있는지를 간단히 표현하자면 아래와 같습니다. 클라이언트에서 AlbumApi 를 호출할 때 Retrofit 객체를 만들어 주고, 또 OkHttpClient 객체를 만들어 주는 부분은 Hilt 로 구현되어 있습니다. 화살표가 UML 의 표준으로 그린 것도 아니고 실제로 H..

안드로이드 Navigatioin Back Stack 없애기

문제 발생 배경 MVVM 아키텍처, Android Jetpack Library 을 적용한 BaBa 라는 프로젝트를 진행 중에 하나의 문제에 도달했습니다. 결론부터 말하면 Navigation 의 back stack 저장 문제였습니다. 문제 시나리오는 아래와 같습니다. 어떤 아기의 앨범 데이터를 서버로부터 불러오는 경우가 있습니다. 이 앨범 데이터들은 ‘월별’, ‘년도별’, ‘전체’ 로 나뉘어져 화면에 띄워져야 합니다. 그리고 월별, 년도별에서 앨범을 클릭하면 해당 월/ 년도의 앨범을 화면에 띄워줍니다. 이런 식으로 말이죠. 팀원들과의 회의를 통해 월별, 년도별, 전체 앨범 데이터를 계속해서 서버와 통신하여 데이터를 가져오는 것보다 한 번의 모든 앨범을 서버에서 클라이언트로 가져온 후 클라이언트에서 데이터를..

Android/UI 2023.05.17

Android ViewPager2 간단히 뜯어보기

BABA 라는 Android Application side project 을 하는 도중 아래와 같은 화면을 만들어야 했습니다. 이 때 ViewPager2 에 대한 이해가 부족한 것 같아 공부하게 되었습니다. (물론 아래 gif 는 ViewPager2 와 Custom 한 TabLayout 을 같이 사용한 것입니다. viewPager2 의 내부 동작 방식 ViewPager2 는 FragmentStateAdapter 을 extend 해서 구현해야 합니다. 그런데 FragmentStateAdapter 는 RecyclerView.Adapter 을 extend 하고 있습니다. 즉, ViewPager2 는 RecyclerView.Adapter 을 사용하여 동작합니다. RecyclerView 에서의 Item 은 Lis..

Android/UI 2023.05.05

비밀 다이어리 ( Handler, SharedPreference, AlertDialog)

지난 시간에 배운 Thread, Handler, Runnable 과 SharedPreference 을 실제 앱에서 사용하여 간단한 비밀 다이어리를 만들어볼 것이다. 아래는 지난 포스팅 링크: Android Thread, Handler, Runnable [Android Thread, Handler, Runnable 이번에는 Android 에서의 Thread, Handler, Runnable 에 대해서 알아봅니다. 사실 작년에 프로젝트를 할 때도 자주 사용되는 기능이고, 또 클론 코딩 등 공부를 하면서도 자주 사용했지만 이번에도 누군가 sh1mj1-log.tistory.com](https://sh1mj1-log.tistory.com/10) Android SharedPreference [Android Shar..

Android/TOYTOY 2022.09.05

Android SharedPreference

SharedPrefernce Context.gethsharedPreference(String, int) 로 리턴된 preference을 접근하고 수정하는 인터페이스. 특정 집합에 대해 모든 클라이언트가 공유하는 이 클래스의 단일 인스턴스가 있다. 즉, 이것은 싱글톤 패턴과 연관이 있다!! SharedPreference 는 데이터를 파일로 저장하는데 이 파일은 앱 폴더 내에 있다. 앱이 삭제되기 전까지 저장한 데이터가 보존된다. data/data/(패키지 이름)/shared_prefs/SharedPreference 기본 설정값이 유지되고, 수정을 하고자 하면 저장소에 commit될 때 Editor 개체를 통과해야 한다. 다양한 get 메서드로 리턴될 수 있다. 이 때 응용 프로그램에서 변경할 수 없는 것으..

Android/Theory 2022.09.05

Android Thread, Handler, Runnable

이번에는 Android 에서의 Thread, Handler, Runnable 에 대해서 알아봅니다. 사실 작년에 프로젝트를 할 때도 자주 사용되는 기능이고, 또 클론 코딩 등 공부를 하면서도 자주 사용했지만 이번에도 누군가 저에게 완벽하게 설명해보라 하면... 자신이 없어서 꼭 한 번 정리해보고 싶었습니다. 포스팅을 읽다보면 뒤의 내용이 조금씩 앞에 나올 수도 있지만 끝까지 쭉 읽어보면 이해가 될 겁니다! 그럼 Thread 부터 봅시다.Thread (스레드)Thread는 프로세스 내에서 “순차적으로 실행되는 실(실행 흐름)" 의 최소 단위이다.안드로이드 앱에서는 메인 스레드는 메시지 큐 수신을 기다리는 루프를 실행하고, 사용자 입력, 시스템 이벤트, 화면 그리기 등의 메시지가 수신되면 각 메시지에 매핑된..

Android/Theory 2022.09.03

Android Layout

아래 내용은 안드로이드 공식문서 및 개발자를 위한 레시피 tistory 을 참고하였습니다. https://recipes4dev.tistory.com/66?category=658689! https://recipes4dev.tistory.com/87?category=658689 https://developer.android.com/guide/topics/ui/declaring-layout https://stackoverflow.com/questions/3482742/what-is-the-difference-between-gravity-and-layout-gravity-in-android Layout Layout 은 사전적 의미로 "배치" 라는 뜻이다. 레이아웃은 앱에서 사용자 인터페이스를 위한 구조(Acti..

Android/UI 2022.08.29