사용안하는 게시판/Android Project
AIO_Android 프로젝트 Document
Everyday Growing Engineer
2022. 6. 22. 11:28
1. 기획 목적 (변경) :
- 안드로이드 예제들 모음 : 내가 사용해봤고 자주 사용하는 실제 안드로이드 예제들을 추가해서 코드 짜는 공부도 하고 실제로 다른앱 개발시 간편하게 이용.
2. 기능 정의 :
- 안드로이드의 예제 코드를 보고 실행되는 화면
3. 목표 기간: (초기버전) 7/27 ~ 9/1. (2차 배포) 9/2 ~ 10/중순
4. 테크스텍 :
안드로이드 : Intellij, Android, Java
디자인 : Figma
5. 초기 프로토 타입: https://www.figma.com/file/rUcVID87CnCxGPoe0Pwi95/Untitled?node-id=0%3A1
6. 앱 이름 & Github주소 :
앱 이름 :AIO_Android (All in one Android) - 안드로이드에서 사용하는 많은 것들을 이프로젝트에 넣겠다는 의미에서 이름 지정
Github 주소 : https://github.com/tvroom88/AIO_Android
7. 앱 구성:
기본 구성:
- 기초 :
- BaseActivity:
- 모든 화면에 기본 Toolbar 적용을 쉽게 하기 위해 BaseActivity에 Toolbar 적용
- 안드로이드 4대 컴포넌트 :
- (1) Activity and Fragment 예제 : Activity와 Fragment 를 xml로만 추가 시키는 방법과 코드로 추가시키는 방법
- (2) BottomNavigation and Fragment 예제: BottomNavigation을 이용해 fragment 화면 바꾸는 예제
- (3) Service 예제 : foreground를 이용해 notification 보내는 예제
- (4) Content Provider: (a) ContentProvider (b) ContentResolver와 앨범 (c) ContentResolver와 주소록 예제
- (5) Broadcast Receiver : 문자 메시지 받는 예제
- 안드로이드 라이프 사이클 :
- onCreate() 부터 onDestroy()까지 구현
- 따로 예제를 보여줄게 없어서 이미지 추가
- 인텐트와 번들 :
- (1) 명시적 Intent: (a) 다른 Activity로 text 보내는 예제, (b) PARCELABLE 이용해 객체 보내기
- (2) 암시적 Intent : (a) 구글맵 연결하기 (b) 전화 연결하기
- (3) Bundle 이용해 정보 저장 : 가로세로 화면 전환시 생명주기 다시시작하는걸 이용한 counter 예제 추가
- 핸들러 :
- (1) 멀티 스레드 사용 - Handler 사용을 위해
- (2) Counter 예제 추가
- (3) Animation 예제 추가
- 다양한 Layout
- LinearLayout, ConstraintLayout, TableLayout, FrameLayout. 4가지 부분 구현
- 위에것을 XML로 구현
- 위에것을 동적으로 구현 (Activity내에서)
- 물론 Layout종류는 다 알긴 했지만 나중에 동적으로 추가시켜야 하는 부분이 있을경우 쉽게 쉽게 가져다 쓰기 위해서 추가
- 데이터 베이스
- SQLite
- RoomDataBase
- Realm
- JSON 데이터 처리
- Gson과 JSONObject, JSONArray를 이용.
- JSON -> 객체 바꾸는 부분 추가
- 객체 -> JSON 바꾸는 부분 추가
- Retrofit을 사용하다 Gson을 보게되서 추가시켜봄.
- 네트워크 통신
- HttpURLConnection 예제 추가
- OKHttp3 예제 추가
- Retrofit2 예제 추가
- RecyclerView, ListView
- RecyclerView 예제 추가
- ListView 예제 추가
- 둘의 속도차이 확인을 위해 BottomNavigation으로 Fragment를 번갈아가면서 측정할수있게 구현
- GridView
- 디자인 패턴
- 간단한 MVC, MVP, MVVM 패턴
- 이미지 라이브러리
- 라이브러리 없이 이미지 불러오는 예제 추가
- Glide, Picasso, Fresco 라이브러리 예제 추가
- okhttp 라이브러리 사용
- JetPack
- DataBinding과 ViewBinding 예제 추가
- Paging 예제 추가
- 추후 더 추가 예정
- Retrofit, Room, Recycler 동시에 사용한 예제
- 이미지와 정보를 불러오는 예제 추가
- 심화 MVVM 예제 추가
- RoomDB, Retrofit, RecyclerView와 free book API를 이용해서 책 정보 찾는 예제 추가
- BaseActivity:
8. 프로젝트를 하면서 고민했던 부분들
더보기
1) Model - singleton 화 시키기 :
- model부분에 singleton pattern으로 만들어 줄지 고민하다가 만들어줌. 왜냐하면 list를 보여주는 부분은 거의 다 model을 사용할텐데 그러면 계속 instant화 시켜야 하고 그러면 메모리를 많이 잡아먹음. 그럴꺼면 singleton pattern으로 메모리에 넣고 바로 쓸수 있는데 편의성이나 메모리를 아끼는데는 더 효과적일듯
2) Model 분산화 :
- 처음에는 모든 데이터를 하나의 Model에 넣어주려고 했었으나 생각해보니 너무 많은 데이터가 하나의 model에 있을경우 데이터 수정과정에서 찾기 힘들것 같아서 분산화 결정.
3) 모든 부분에 거의 똑같은 Toolbar 사용
- BaseActivity를 각 Activity를 상속하게 해 중복되는 코드를 줄임
- BaseActivity를 넣어주는게 좋은건지를 모르겠음.