전체 글

전체 글

    [JETPACK개론] SQLite(1)

    앱을 이용하다보면 네트워크가 끊겼을 때 네트워크 오류입니다. 다시 시도해 주세요 라는 메세지를 본 적이 있다. 하지만 카카오톡 채팅방처럼 네트워크가 연결되어 있지 않은 상황에서도 잘 보이고 있는 것을 알 수 있다. 서버에서 불러오는 방식일 수도 있지만 다른 곳에다가 저장을 해두고, 불러오는 방식을 사용할 수 있을 것이다. 우리는 이를 Local DB라고 부르며 SQLite와 Room이 있다. Room은 SQLite를 완벽히 활용하면서 원활한 데이터베이스 엑세스가 가능하도록 하는 업그레이드 버전이라 할 수 있다. 여러 장점이 있지만 반복적이고 오류가 발생하기 쉬운 상용구 코드를 최소화하는 것이 Room의 장점이다. 먼저 Room을 공부하기전 SQLite의 개념을 알고, Room을 공부할 예정이다! 이 글에..

    [JETPACK개론] Retrofit + ViewModelScope + RV + Glide

    [JETPACK개론] Retrofit + ViewModelScope + RV + Glide

    이 게시물에서는 기존에 진행했던 Retrofit + ViewModel + RV에서 해당 데이터에 이미지를 Glide로 불러오고, AAC(Android Architecture Components)에 맞게끔 구조를 살짝 변경해보겠다. AAC(Android Architecture Components) 는 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리의 모음이다. 위의 그림처럼 크게 ViewModel, Repositroy, Room, Retrofit 등이 포함되어 있다. 이제 코드를 살펴보자. 먼저 위와 같이 패키지를 분리하여 구성하였고, object RetrofitInstance { val BASE_URL = "https://raw.githubusercontent.com/" val clin..

    [JETPACK개론] Retrofit 예제 + RecyclerView

    [JETPACK개론] Retrofit 예제 + RecyclerView

    먼저 기존의 포스팅 했던 게시물에 이어서 Retrofit + ViewModel + ViewModelScope + RecyclerView 를 이용하여 여태까지 공부했던 내용을 합쳐 예제를 통해 연습해보자! Retrofit 게시물 -> [JETPACK개론] Retrofit 트러버 앱을 만들면서 Retrofit을 많이 이용하였는데 ViewModel 과 코루틴과 같이 사용해본 경험은 없어 아쉬움이 큰 프로젝트였다. 따라서 이번 젯팩 인프런 강의를 들으면서 다시 한번 복습하며 Vie ssongcode.tistory.com @GET("posts/1") suspend fun getPost1() : Post @GET("posts/{number}") suspend fun getPostNumber( @Path("numbe..

    [JETPACK개론] Coroutine / ViewModelScope

    [JETPACK개론] Coroutine / ViewModelScope

    Coroutine 코루틴은 비동기적으로 실행되는 코드를 간소화 하기 위해 안드로이드에서 사용할 수 있는 동시 실행 설계 패턴이다. 이 전에 포스팅했던 게시물에서 CallBack Hell을 해결할 수 있는 좋은 수단이다 CallBack Hell 관련 게시물 -> [JETPACK개론] Retrofit의 CallBack Hell 전에 Retrofit을 주제로 포스팅했던 글에서 이어서 작성을 해보겠다. 간단하게 아래와 같은 api를 여러 개 불러온다고 가정해보자. @GET("posts/{number}") fun getPostNumber( @Path("number") number : Int ) :.. ssongcode.tistory.com 코루틴의 기초를 한번 다뤄보자. suspend fun a() { //a작업..

    [JETPACK개론] Retrofit의 CallBack Hell

    전에 Retrofit을 주제로 포스팅했던 글에서 이어서 작성을 해보겠다. 간단하게 아래와 같은 api를 여러 개 불러온다고 가정해보자. @GET("posts/{number}") fun getPostNumber( @Path("number") number : Int ) : Call api.getPost1().enqueue(object : Callback{ override fun onResponse(call: Call, response: Response) { Log.d("API1", response.body().toString()) } override fun onFailure(call: Call, t: Throwable) { Log.d("API1", "fail") } }) api.getPostNumber(2)..