android

Android/Common

[Android] MVP 적용해보기 - View와 Presenter

MVP Architecture MVP는 Model과 View, Presenter로 나누는 패턴이다. MVC와 비교하여 View와 Model이 서로 존재를 몰라 의존성이 줄어든다. 이말은 쉽게 View와 Model 클래스를 변경, 수정할 수 있고 MVC에 비해 Model 클래스의 유닛 테스트를 쉽게 시도할 수 있다. Model Local DB, Remote DB, sharedPreference .. 등 데이터를 수정, 관리하는 Class Presenter 사용자의 액션을 받아 로직을 처리하고, Model에게 Data 변경을 요청하거나 UI 업데이트하는 로직을 처리하는 Class ViewContract : View and Presenter의 설계 사용자 액션을 Presetner에 떠넘기고, UI 업데이트하는..

Android/Common

[Android] Executor - 기능 별 Thread 분리

최근 Google Architecture MVP Sample project를 참고하여 MVP를 공부하던 도중 Executor의 클래스를 처음 보게 되었다. 그 후 구글링을 통해 네트워크 IO 통신과 디스크 IO 작업, UI 작업등 Background 작업을 위해 해당 클래스가 사용되었고 kotlin의 coroutine이 출시되기 이전 Thread를 유용하게 사용한 방법이었다. - Executor Inferface import java.util.concurrent interface Executor { void execute(Runnable command); } 구조로만 보면 Runnable 객체를 실행하는 단순한 구조이다. 클래스 자체로 어떤 Background 프로세스가 생성되는 것이 아닌 틀만 제공해준..

Android/Common

[Android] MVC 적용하기

해당 포스팅의 코드와 설명에 오류가 있다면 댓글로 말해주시면 감사하겠습니다. 며칠 전, 출시 된지 꽤 지난 어플이 사용하던 API 서버 호출 오류로 내부 로직이 꼬여 먹통이 되어 버렸다. 해당 프로젝트는 기능 동작만 생각하던 옛날의 내가 Ctrl + c, Ctrl + v를 수행한 중복 코드도 많고 매우 비효율 적으로 구현한 작품. 다시금 스스로 작성한 코드를 보면서 디자인 패턴의 중요성을 느끼고 가장 기초적인 MVC 패턴부터 적용하기로 마음을 먹었다. Model-View-Controller 패턴 프로젝트의 기능과 비례하게 코드의 양이 늘어난다. 디자인 패턴을 적용하지 않은 프로젝트는 Activity 클래스 파일에 모든 코드가 들어가 있고 해당 클래스 파일의 코드의 수는 몇 천줄이 되어 어떤 한 기능을 수..

Android/Common

[Android] Google Calendar API 사용법

Google Cloud Calendar API 설정 Step 1. 구글 콘솔 사이트 들어가기 Step 2. 프로젝트 만들기 Google Cloud Platfrom 에서 프로젝트를 생성해야 해당 Project ID를 통해 Calendar API 등 여러 API를 사용할 수 있습니다. Step 3. 프로젝트 이름을 입력하고 만들기를 눌러주세요. Step 4.라이브러리에서 Google Calendar API 설정 Step 5. 인증정보 만들기 사용자 인증 정보 만들기 위해 OAuth에 대해 사용자에게 동의를 구할 때 나오는 화면을 설정해 주어야 합니다. Google Cloud Platform G Suite 계정이 아니면 내부 User Type 선택이 불가능 하므로 외부로 설정합시다. 동의화면은 외부만 선택이 ..

Android/Common

[Android] 바인딩 서비스로 음악 재생

이 포스팅은 Music Player 재생의 간단한 로직을 FLO 앱 챌린지에 맞춰 개발한 내용에 대해 제 생각을 정리한 글입니다. 부족한 부분이 있으면 댓글로 알려주시면 감사하겠습니다. 멜론 어플을 사용한 유저라면 다른 어플을 사용 중에도 음악이 재생되는 것을 알 수 있을 것이다. 이는 음악이 Service에서 무한히 재생이 되고 있다는 뜻. 보통의 Service는 어떠한 값도 반환하지 않고 서비스를 종료하는 요청 외에 외부 서비스 내 함수에 접근할 수 없다. 그런데 음악이 재생되고 있는 도중 멜론 앱을 다시 키면 현재 재생되고 있는 곡의 정보를 바로 보여준다. 왜? 답은 Bound Services 이다. Service와 Activity의 관계과 서버와 클라이언트 관계가 된 것처럼 Activity는 Se..

Android/Common

[Android] 로또 정보 크롤링해보기 by Kotlin

Jsoup Jsoup이란 Html을 가져오고 파싱을 도와주는 자바 라이브러리이다. 자바와 완벽히 호환이 되는 Kotlin으로 Jsoup을 사용해보자 implementation 'org.jsoup:jsoup:1.11.3' 파싱할 정보 이번에 파싱할 정보는 등수 별 당첨 인원이다. 당첨 번호의 목록은 api로 제공되지만 순위 별 당첨번호는 제공하지 않기 때문이다. 파싱할 Html 형식을 보면 가져와야할 데이터들은 - - 계층구조에 존재한다. 위와 같은 예로 A>B>C 계층 구조의 태그를 파싱할 때는 공백으로 구분한다. regex table tbody tr code val url = "https://dhlottery.co.kr/gameResult.do?method=byWin" val doc = Jsoup.co..

Android/Common

[Android] AAC - View Binding

들어가기 전 Kotlin 1.4.20 Release에서 변경점이 생겼습니다. kotlin extensions plugin이 deprecated 된 점입니다. kotlin extensions plugin에는 synthetic views라는 뷰에 대해 접근하는 코드를 생략해주던 기능이 포함 되어 있었습니다. //Activity or Fragment name.text = "test" 그런데 새로운 버전에서는 dprecated 되었으니 계속 해당 기능을 이용할 수는 없습니다. 다른 대안이 있을까요? ViewBinding란? Android AAC 중 하나로 view의 접근하는 코드를 조금 더 쉽게 작성할 수 있게 도와주는 기능입니다. ex) findViewByID 대신 사용 할 수 있다. Gradle 설정 etc..

Android/Common

[Android] 면접에서 헷갈릴수 있는 Activity Lifecycle

위 Activity의 Lifecycle 그림은 대부분 알고 있으실 건데요. 하지만 두 Activity 간의 전환 사이에서 발생하는 Lifecycle 순서는 대부분 모르실겁니다. (어떤 면접관분께서는 실제 면접에서 질문했을 때 지금까지 맞춘 사람을 2명 보았다고 하네요.) 한번 맞춰보실까요?? Q1. 현재 A 엑티비티가 포그라운드 상태입니다. 이때 B 액티비티로 전환될 때, 발생하는 LifeCycle 콜백 함수들을 순서대로 나열해보세요. A:onPause() A:onStop() B:onCreate() B:onStart() B:onResume() 위 순서로 푸셨다면 아쉽지만 정답자에 들어가지 못하셨습니다 ㅠ 정답 A:onPause() B:onCreate() B:onStart() B:onResume() A:o..

Android/Common

[Android] RecyclerView의 최상단 최하단 감지하기

안녕하세요 점냥입니다:) 페이징을 구현하려고 할 때, Jetpack Paging 라이브러리를 쓰지 않는 다면 우리는 리스트의 끝을 도달하는 시점을 확인해야 합니다. recyclerview에서는 함수로 쉽게 제공해주고 있습니다! canScrollVertically(int direction) // 수직 상단 하단 감지 canScrollHorizontally(int direction) //수평 상단 하단 감지 수직 기준 direction 값이 1이면 하단 방향 , -1이면 상단 방향 수평 기준 direction 값이 1이면 오른쪽 방향 , -1이면 왼쪽 방향 위 조건을 사용하여 아래처럼 구현할 수 있습니다. myList.setOnScrollListener(new RecyclerView.OnScrollListe..

Language/kotlin

[Kotlin] Kotlin을 왜 배워야 할까요?

안녕하세요. 점냥입니다 :) 여러분들은 Kotlin 언어를 알고 있나요? 열심히 Android 공부를 하고 있는 여러분이라면 이미 알고 있겠죠 ㅎㅎㅎ Kotlin은 Google I/O 17년도에서 Android 공식 언어로 지정되었습니다!! 아직 Kotlin을 사용하지 않는 다면 서두르세요. 어느새 Android Develop 사이트 전반적인 코드 샘플들과 공식 유투브에서 Kotlin 언어를 기본으로 사용중인 것을 확인할 수 있습니다. 이 포스팅을 읽고 나서 Kotlin 언어에 대한 흥미가 생기셨으면 좋겠습니다. Kotlin 배경 Kotlin 언어가 나오기 전 Android 플랫폼에서는 C++ 언어도 쓰이긴 했지만, 대다수의 개발자들은 Java 언어를 사용해서 개발했습니다. Java 언어는 JVM에서 동..

점냥
'android' 태그의 글 목록 (6 Page)