SlideShare a Scribd company logo
1 of 29
Download to read offline
Android
삽질 일지
Android 개발 - 간단한 디자인 소개
마치 분필로 칠판에 쓴듯한
추억을 자극하는
개발자 답지 않은
세련된 디자인
Android 개발 - 간단한 구조 소개
누가 봐도 한 눈에 이해되는
몹시 깔끔한
MVC 구조
M
C
V
Android 개발 - 간단한 구조 소개
Command 패턴을 적용하여
Class 이름만 봐도
무슨 역할을 할지 알 수 있을 것만 같은
감동적인 네트워크 전담 패키지
지금부터 상세하게
삽질을 공유해 드리겠습니다.
개쩌니까 잘 들어주세요!
Android 개발 - 삽질 1 : Authorization
로그인 없이 간편하게
게시판을 사용하게 해주고 싶은데…
하지만 자기가 쓴 글을 수정하거나 삭제하려면
각각의 휴대폰을 식별 할 수 있는 ID가 필요해…
Android 개발 - 삽질 1 : Authorization
Device ID라는게 있다는데??
불법
Android 개발 - 삽질 1 : Authorization
Device ID를 대신 할 수 있는 Unique한 ID는 없을까?
java.util의
UUID(Universally Unique Identifier)클래스를 사용해
UUID를 랜덤으로 뽑습니다.
Android 개발 - 삽질 1 : Authorization
“UUID를 누군가 관리하면서,
중복되지 않게 할당해 주어야 하는게 아닌가요?”
“랜덤으로 만든 값을 쓰다보면, 누군가와 겹치지 않을까요?”
Android 개발 - 삽질 1 : Authorization
로또 당첨 확률
약 8000000 분의 1
Android 개발 - 삽질 1 : Authorization
UUID 2개가 중복될 확률
“16자리의 16진수가 순서에 맞게 같아야 한다.”
약 350000000000000000000000000000000000000분의 1
Android 개발 - 삽질 1 : Authorization
Server Client
첫 진입
POST
{UUID : %@#$}UUID를
DB저장,
암호화된
token 발행 RESPONSE
{token : ^$@!}
SharedPreference로
token을 로컬에 저장
HTTP Header
Authorization : token
이후 네트워크 통신 시
HTTP Header에
token을 함께 보냄
HTTP Header에서
token정보를 가져와
사용자 식별
Android 개발 - 삽질 2 : Network
Android 네트워크 삽질의 추억…
“어, 왜 5.0에서만 POST가 보내지지??”
“4.2, 4.3은 안되고 또 4.1은 되네.. 뭐지???ㅠㅠ”
“왜 두번 클릭해야 POST를 하지??”
대 체 왜 !!!
오픈 소스 사용하자!!!
Android 개발 - 삽질 2 : Network
“오픈소스 뭐 쓰지?”
여러 라이브러리를 고르던 중,
Android에 특화되어 가벼운 용량과 간편한 사용법이 장점인
Async-HttpClient를 사용하기로 결정!
Android 개발 - 삽질 2 : Network
토큰을 가져와 HTTP Header에 집어넣고,
Android 개발 - 삽질 2 : Network
이렇게 URL과 call back만 구현하면 끝!
Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
MVC… 듣기는 많이 들어 봤는데, 어떻게 설계 해야 하나??
Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
일단 패키지를 나눠서 MVC와 Entity, Network를 구분해보자!
M
C
V
Entity
Network
깔끔한데??
Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
깔끔하긴 하지만… MVC로 구조를 짜는 이유는 뭘까?
조금 더 아래에 깔려 있는 원칙은??
“Component 단위의 분리”
Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
“Component 단위의 분리”를 통해
유지, 보수를 하기가 쉬워진다!
즉, 하나의 컴포넌트를 수정함에 있어
다른 컴포넌트에 영향을 최소화하기 위함!
Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
ViewModel
Controller
Model과 View를 생성
View의 이벤트를 처리할
Listener 인터페이스 구현
내부 인터페이스
Listener를 선언
Model Listener를 구현
내부 인터페이스
Model Listener를 선언
Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
ViewModel
Controller
Model과 View를 생성
View의 이벤트를 처리할
Listener 인터페이스 구현
내부 인터페이스
Listener를 선언
Model Listener를 구현
내부 인터페이스
Model Listener를 선언
사용자에게
이벤트를 받아
Controller로 넘기면
Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
ViewModel
Controller
Model과 View를 생성
View의 이벤트를 처리할
Listener 인터페이스 구현
내부 인터페이스
Listener를 선언
Model Listener를 구현
내부 인터페이스
Model Listener를 선언
Controller는
Listener인터페이스의
구현에 따라
Model을 호출
Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
ViewModel
Controller
Model과 View를 생성
View의 이벤트를 처리할
Listener 인터페이스 구현
내부 인터페이스
Listener를 선언
Model Listener를 구현
내부 인터페이스
Model Listener를 선언
Model의 변화를
View가 감지하고
Model Listener의
구현에 따라
화면 변경
Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
이렇게 나눠놓으니 확실히 코드 변경이 쉬워졌습니다!
Android 개발 - 그 외 삽질들
그 외에도 JSON Parser로
어떤 라이브러리를 사용할까를 선택하는 과정,
인터넷 폰트를 적용하는 것 등등
사소하지만 해보지 않았던 부분들을
삽질해 보았습니다.
Android 개발 - 그 외 삽질들
아직 진행중인 무한스크롤 이슈와
이미지 Resizing에 관한 이슈 등 훨씬더 다양한 삽질로
학기말에 공유하도록 하겠습니다.
감사합니다.

More Related Content

Viewers also liked

RxAndroid: 비동기 및 이벤트 기반 프로그래밍을 위한 라이브러리
RxAndroid: 비동기 및 이벤트 기반 프로그래밍을 위한 라이브러리RxAndroid: 비동기 및 이벤트 기반 프로그래밍을 위한 라이브러리
RxAndroid: 비동기 및 이벤트 기반 프로그래밍을 위한 라이브러리Soyeon Kim
 
초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기OnGameServer
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개beom kyun choi
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개beom kyun choi
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.Kris Jeong
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기YoungSu Son
 
2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태NAVER D2
 

Viewers also liked (7)

RxAndroid: 비동기 및 이벤트 기반 프로그래밍을 위한 라이브러리
RxAndroid: 비동기 및 이벤트 기반 프로그래밍을 위한 라이브러리RxAndroid: 비동기 및 이벤트 기반 프로그래밍을 위한 라이브러리
RxAndroid: 비동기 및 이벤트 기반 프로그래밍을 위한 라이브러리
 
초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기초보자를 위한 분산 캐시 이야기
초보자를 위한 분산 캐시 이야기
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기
 
2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태
 

Similar to Android 삽질일지

Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulBansook Nam
 
hello mvp for android
hello mvp for androidhello mvp for android
hello mvp for androidWonjun Hwang
 
iOS Architecture.pdf
iOS Architecture.pdfiOS Architecture.pdf
iOS Architecture.pdfssuser86e2971
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellijSewon Ann
 
Rx for iOS App. RxMVVM-DataCenter!
Rx for iOS App. RxMVVM-DataCenter!Rx for iOS App. RxMVVM-DataCenter!
Rx for iOS App. RxMVVM-DataCenter!SUNGCHEOL KIM
 
『안드로이드 시큐리티 인터널』 - 미리보기
『안드로이드 시큐리티 인터널』 - 미리보기『안드로이드 시큐리티 인터널』 - 미리보기
『안드로이드 시큐리티 인터널』 - 미리보기복연 이
 
React native development
React native developmentReact native development
React native developmentSangSun Park
 
Welcome to Android Studio
Welcome to Android StudioWelcome to Android Studio
Welcome to Android StudioWonKyun Lim
 
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf병근 손
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)SangIn Choung
 
반응형 웹 디자인
반응형 웹 디자인반응형 웹 디자인
반응형 웹 디자인준극 김
 
Knockout js소개
Knockout js소개Knockout js소개
Knockout js소개Kwangho SEO
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyunjaeyunjeong1
 
Implementing android mvi pattern
Implementing android mvi patternImplementing android mvi pattern
Implementing android mvi pattern금 허
 
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음DataUs
 
디자인 시스템 디자인하기
디자인 시스템 디자인하기디자인 시스템 디자인하기
디자인 시스템 디자인하기sangyong lee
 
[2022]찰스의안드로이드컨퍼런스_텐서플로라이트를활용한안드로이드딥...
[2022]찰스의안드로이드컨퍼런스_텐서플로라이트를활용한안드로이드딥...[2022]찰스의안드로이드컨퍼런스_텐서플로라이트를활용한안드로이드딥...
[2022]찰스의안드로이드컨퍼런스_텐서플로라이트를활용한안드로이드딥...Taekyu Lim
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Sa-ryong Kang
 
[HCI2010]UI패턴기반 UI설계/개발자동화사례발표
[HCI2010]UI패턴기반 UI설계/개발자동화사례발표[HCI2010]UI패턴기반 UI설계/개발자동화사례발표
[HCI2010]UI패턴기반 UI설계/개발자동화사례발표ChangGyum Kim
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드Justin Park
 

Similar to Android 삽질일지 (20)

Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
 
hello mvp for android
hello mvp for androidhello mvp for android
hello mvp for android
 
iOS Architecture.pdf
iOS Architecture.pdfiOS Architecture.pdf
iOS Architecture.pdf
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
Rx for iOS App. RxMVVM-DataCenter!
Rx for iOS App. RxMVVM-DataCenter!Rx for iOS App. RxMVVM-DataCenter!
Rx for iOS App. RxMVVM-DataCenter!
 
『안드로이드 시큐리티 인터널』 - 미리보기
『안드로이드 시큐리티 인터널』 - 미리보기『안드로이드 시큐리티 인터널』 - 미리보기
『안드로이드 시큐리티 인터널』 - 미리보기
 
React native development
React native developmentReact native development
React native development
 
Welcome to Android Studio
Welcome to Android StudioWelcome to Android Studio
Welcome to Android Studio
 
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
반응형 웹 디자인
반응형 웹 디자인반응형 웹 디자인
반응형 웹 디자인
 
Knockout js소개
Knockout js소개Knockout js소개
Knockout js소개
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
Implementing android mvi pattern
Implementing android mvi patternImplementing android mvi pattern
Implementing android mvi pattern
 
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음
 
디자인 시스템 디자인하기
디자인 시스템 디자인하기디자인 시스템 디자인하기
디자인 시스템 디자인하기
 
[2022]찰스의안드로이드컨퍼런스_텐서플로라이트를활용한안드로이드딥...
[2022]찰스의안드로이드컨퍼런스_텐서플로라이트를활용한안드로이드딥...[2022]찰스의안드로이드컨퍼런스_텐서플로라이트를활용한안드로이드딥...
[2022]찰스의안드로이드컨퍼런스_텐서플로라이트를활용한안드로이드딥...
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
 
[HCI2010]UI패턴기반 UI설계/개발자동화사례발표
[HCI2010]UI패턴기반 UI설계/개발자동화사례발표[HCI2010]UI패턴기반 UI설계/개발자동화사례발표
[HCI2010]UI패턴기반 UI설계/개발자동화사례발표
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드
 

Recently uploaded

데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법JMP Korea
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석JMP Korea
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP Korea
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화JMP Korea
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP Korea
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP Korea
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP Korea
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?Jay Park
 

Recently uploaded (8)

데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 

Android 삽질일지

  • 2. Android 개발 - 간단한 디자인 소개 마치 분필로 칠판에 쓴듯한 추억을 자극하는 개발자 답지 않은 세련된 디자인
  • 3. Android 개발 - 간단한 구조 소개 누가 봐도 한 눈에 이해되는 몹시 깔끔한 MVC 구조 M C V
  • 4. Android 개발 - 간단한 구조 소개 Command 패턴을 적용하여 Class 이름만 봐도 무슨 역할을 할지 알 수 있을 것만 같은 감동적인 네트워크 전담 패키지
  • 5. 지금부터 상세하게 삽질을 공유해 드리겠습니다. 개쩌니까 잘 들어주세요!
  • 6. Android 개발 - 삽질 1 : Authorization 로그인 없이 간편하게 게시판을 사용하게 해주고 싶은데… 하지만 자기가 쓴 글을 수정하거나 삭제하려면 각각의 휴대폰을 식별 할 수 있는 ID가 필요해…
  • 7. Android 개발 - 삽질 1 : Authorization Device ID라는게 있다는데??
  • 9. Android 개발 - 삽질 1 : Authorization Device ID를 대신 할 수 있는 Unique한 ID는 없을까? java.util의 UUID(Universally Unique Identifier)클래스를 사용해 UUID를 랜덤으로 뽑습니다.
  • 10. Android 개발 - 삽질 1 : Authorization “UUID를 누군가 관리하면서, 중복되지 않게 할당해 주어야 하는게 아닌가요?” “랜덤으로 만든 값을 쓰다보면, 누군가와 겹치지 않을까요?”
  • 11. Android 개발 - 삽질 1 : Authorization 로또 당첨 확률 약 8000000 분의 1
  • 12. Android 개발 - 삽질 1 : Authorization UUID 2개가 중복될 확률 “16자리의 16진수가 순서에 맞게 같아야 한다.” 약 350000000000000000000000000000000000000분의 1
  • 13. Android 개발 - 삽질 1 : Authorization Server Client 첫 진입 POST {UUID : %@#$}UUID를 DB저장, 암호화된 token 발행 RESPONSE {token : ^$@!} SharedPreference로 token을 로컬에 저장 HTTP Header Authorization : token 이후 네트워크 통신 시 HTTP Header에 token을 함께 보냄 HTTP Header에서 token정보를 가져와 사용자 식별
  • 14. Android 개발 - 삽질 2 : Network Android 네트워크 삽질의 추억… “어, 왜 5.0에서만 POST가 보내지지??” “4.2, 4.3은 안되고 또 4.1은 되네.. 뭐지???ㅠㅠ” “왜 두번 클릭해야 POST를 하지??” 대 체 왜 !!! 오픈 소스 사용하자!!!
  • 15. Android 개발 - 삽질 2 : Network “오픈소스 뭐 쓰지?” 여러 라이브러리를 고르던 중, Android에 특화되어 가벼운 용량과 간편한 사용법이 장점인 Async-HttpClient를 사용하기로 결정!
  • 16. Android 개발 - 삽질 2 : Network 토큰을 가져와 HTTP Header에 집어넣고,
  • 17. Android 개발 - 삽질 2 : Network 이렇게 URL과 call back만 구현하면 끝!
  • 18. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계 MVC… 듣기는 많이 들어 봤는데, 어떻게 설계 해야 하나??
  • 19. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계 일단 패키지를 나눠서 MVC와 Entity, Network를 구분해보자! M C V Entity Network 깔끔한데??
  • 20. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계 깔끔하긴 하지만… MVC로 구조를 짜는 이유는 뭘까? 조금 더 아래에 깔려 있는 원칙은?? “Component 단위의 분리”
  • 21. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계 “Component 단위의 분리”를 통해 유지, 보수를 하기가 쉬워진다! 즉, 하나의 컴포넌트를 수정함에 있어 다른 컴포넌트에 영향을 최소화하기 위함!
  • 22. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계 ViewModel Controller Model과 View를 생성 View의 이벤트를 처리할 Listener 인터페이스 구현 내부 인터페이스 Listener를 선언 Model Listener를 구현 내부 인터페이스 Model Listener를 선언
  • 23. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계 ViewModel Controller Model과 View를 생성 View의 이벤트를 처리할 Listener 인터페이스 구현 내부 인터페이스 Listener를 선언 Model Listener를 구현 내부 인터페이스 Model Listener를 선언 사용자에게 이벤트를 받아 Controller로 넘기면
  • 24. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계 ViewModel Controller Model과 View를 생성 View의 이벤트를 처리할 Listener 인터페이스 구현 내부 인터페이스 Listener를 선언 Model Listener를 구현 내부 인터페이스 Model Listener를 선언 Controller는 Listener인터페이스의 구현에 따라 Model을 호출
  • 25. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계 ViewModel Controller Model과 View를 생성 View의 이벤트를 처리할 Listener 인터페이스 구현 내부 인터페이스 Listener를 선언 Model Listener를 구현 내부 인터페이스 Model Listener를 선언 Model의 변화를 View가 감지하고 Model Listener의 구현에 따라 화면 변경
  • 26. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계 이렇게 나눠놓으니 확실히 코드 변경이 쉬워졌습니다!
  • 27. Android 개발 - 그 외 삽질들 그 외에도 JSON Parser로 어떤 라이브러리를 사용할까를 선택하는 과정, 인터넷 폰트를 적용하는 것 등등 사소하지만 해보지 않았던 부분들을 삽질해 보았습니다.
  • 28. Android 개발 - 그 외 삽질들 아직 진행중인 무한스크롤 이슈와 이미지 Resizing에 관한 이슈 등 훨씬더 다양한 삽질로 학기말에 공유하도록 하겠습니다.