전체 글
Velog로 블로그 이전합니다.
Tistory도 좋았지만 Velog에서 마크다운을 제공하다보니 훨씬 깔끔해보이더군요.. 앞으로의 포스팅은 아래에서 작성할 예정입니다. 감사합니다. https://velog.io/@buna1592 buna1592 (부나) - velog velog.io
[Android] Kerdy에서 다뤄온 Retrofit 에러 처리
커디(Kerdy) 프로젝트에서는 서버와의 HTTP 통신을 위해 Retrofit2(이하 Retrofit), OkHttp3 라이브러리를 사용하고 있다. Retrofit는 OkHttp3을 보다 간편하고 직관적으로 사용할 수 있도록 해준다. [Android] OkHttp & Retrofit [Android] OkHttp & Retrofit Android에서 네트워크 작업을 할 때 사용하는 대표적인 라이브러리는 아래와 같다. OkHttp Retrofit 두 라이브러리 모두 Square사에서 개발한 HTTP 통신 라이브러리이다. OkHttp는 HTTP 통신을 간편하게 할 itstory1592.tistory.com 목차 다양한 HTTP 통신 결과 Kerdy가 거쳐온 에러 처리 하나하나 처리하기 공통 top-level..
[우아한테크코스] 레벨3 프로젝트[커디]를 마치며..
눈 깜짝할 사이에 우아한테크코스(이하 우테코) 레벨 3 교육 과정이 마무리되었다. 6월 6일, 마지막 포스팅 날짜를 보면 거의 2달 반 동안 포스팅을 작성할 시간이 부족했음을 알 수 있다. (이에 대한 원인은 아래에서 다룰 것이다.) 레벨 3 교육 과정을 아래에 보이는 기승전결 그래프로 요약할 수 있다. 그래프에서 보이는 것처럼, 문제 발생으로 우리 팀은 다른 팀에 비해 부족한 시간을 가지게 되었다. 지금부터 커디 프로젝트에 대해 기승전결로 풀어나갈 것이다. 기(起) : 화목한(?) 프로젝트의 시작 우테코는 레벨3 교육 과정에서 이전 단계에서 배운 지식들을 바탕으로 팀 프로젝트를 진행한다. 여러 크루들은 레벨 2 교육이 종료되기 전에 아이디어를 제출하며, 선정된 아이디어에 따라 크루들을 랜덤하게 배치하는..
[Android] OkHttp & Retrofit
Android에서 네트워크 작업을 할 때 사용하는 대표적인 라이브러리는 아래와 같다. OkHttp Retrofit 두 라이브러리 모두 Square사에서 개발한 HTTP 통신 라이브러리이다. OkHttp는 HTTP 통신을 간편하게 할 수 있는 기능을 지원한다. Retrofit은 OkHttp를 조금 더 추상화하여, 직관적이고 편리하게 사용할 수 있다. Retrofit은 OkHttp에 의존하고 있다. OkHttpClient를 Retrofit의 Builder에 전달하여 생성하는 방식을 따른다. 결론적으로, Retrofit이 OkHttp에 비해 가진 장점은 크게 3가지라고 생각한다. interface와 어노테이션을 사용하여 직관적이며, Call을 직접 만들어줄 필요가 없다. String 타입으로 전달되는 JSON..
[Android] BroadcastReceiver 보안 이슈
BroadcastReceiver BroadcastReceiver는 Android 4대 컴포넌트 중 하나이다. 시스템에서 발생하는 이벤트를 수신하기 위한 목적을 가지고 있다. 예를 들어, 화면이 꺼졌다가 켜진다던지, 단말 부팅이 완료되었다던지, 또는 개발자가 임의로 시스템에 이벤트를 전달하여 Receiver들에게 전달할 수도 있다. 이러한 이벤트를 전달하는 단위를 Android에서는 Broadcast라고 부른다. 이름 뜻 그대로, 방송이라는 의미를 가지고 있다. 그렇기 때문에 이러한 방송을 보고 싶어하는 어플리케이션에서는 이를 수신할 수 있다. Broadcast는 크게 2가지로 구분된다. 바로 명시적 브로드캐스트 vs 암시적 브로드캐스트 이다. 명시적 브로드캐스트 (Explict Broadcast) 특정 ..
[Android] API 33 onBackPressed() deprecated
Android API 33에서 개선된 predictive back gesture이다. 이름 그대로 예측 가능한 뒤로가기 동작이라는 의미이다. 이전 버전에서 back gesture를 지원할 때에는 단순히 화살표만 보여주었다. 그렇기 때문에 사용자들은 앱에서 화면을 오른쪽으로 Swipe를 할 때에도 실수로 앱이 닫히는 것을 예측하지 못하는 경우가 빈번했다. 이러한 이유로 Android 13에서는 화면이 작아지는 애니메이션을 추가하여 사용자의 동작이 앱을 종료하고 있음을 예측하도록 변경하였다. Android API 33부터 onBackPressed() 콜백이 deprecated 되었다. Back gesture는 특정 앱에서만 사용 가능한 것이 아니라, 안드로이드 시스템에서 지원하는 기능이다. 따라서, Back..
[Android] PendingIntent 공식문서 파헤치기
해당 포스팅은 Android 공식문서를 읽고 정리한 내용을 바탕으로 작성하였습니다. https://developer.android.com/reference/android/app/PendingIntent PendingIntent | Android Developersdeveloper.android.com A description of an Intent and target action to perform with it. Instances of this class are created with getActivity(Context, int, Intent, int), getActivities(Context, int, Intent, int), getBroadcast(Context, int, Intent, int), ..
[Android] RecyclerView Animation (LayoutAnimation, ItemAnimator)
RecyclerView는 안드로이드 앱에서 많은 아이템들을 리스트로 보여줄 때 유용하게 사용되는 위젯 중 하나이다. RecyclerView에 animation을 적용할 수 있는 방법은 크게 2가지다. LayoutAnimation RecyclerView.ItemAnimatior LayoutAnimation public class RecyclerView extends ViewGroup implements ... LayoutAnimation은 RecyclerView의 고유한 개념이 아닌, ViewGroup에 통용되는 속성이다. RecyclerView 또한 ViewGroup을 상속하고 있으므로, LayoutAnimation 적용이 가능하다. LayoutAnimation을 적용하는 방법은 아래와 같다. 1. La..
[Android] Listview vs RecyclerView
안드로이드에서 아이템을 순차적으로 나열하기 위해서 사용할 수 있는 View는 2종류가 있다. 1. ListView 2. RecyclerView 이 둘은 모두 아이템을 화면에 연속적으로 보여주며, 다양한 ViewType을 정의해줄 수 있다. 그러나 몇가지 핵심적인 차이가 존재한다. RecyclerView와 ListView의 차이점 RecyclerView ListView ViewHolder ViewHolder 패턴을 강제한다. ViewHolder 패턴이 선택 사항이다. Scroll & Layout 수직, 수평 스크롤을 지원한다. Linear, Grid, StaggeredGrid와 같이 아이템 배치를 다양하게 지원한다. 수직 스크롤만 지원한다. Linear(Vertical) 배치만 가능하다. Click Det..
[Kotlin] Jvm Prefix Annotation 5가지 파헤치기
코틀린은 자바와의 상호 운용을 중요하시하는 언어이다. 따라서 JVM 상에서 두 언어의 유연함을 가지기 위해 Jvm Prefix Annotation을 제공한다. 주로 사용하는 5가지 Annotation에 대해 알아보자. JvmField JvmStatic JvmOverloads JvmName JvmSynthetic 1. JvmField 코틀린에는 프로퍼티라는 개념이 존재하지만, 자바에서는 필드라는 개념이 존재한다. 즉, 자동으로 getter/setter를 만들어주지 않는다. 따라서 코틀린의 프로퍼티를 자바에서 필드처럼 사용하고 싶다면 @JvmField 어노테이션을 사용한다. class Person { @JvmField var name: String = "John Doe" } // 자바 코드에서 호출 Pers..