Android 삽질일지
-
Upload
hyunho-cho -
Category
Engineering
-
view
398 -
download
0
Transcript of Android 삽질일지
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에 관한 이슈 등 훨씬더 다양한 삽질로
학기말에 공유하도록 하겠습니다.
감사합니다.