사용안하는 게시판/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를 이용해서 책 정보 찾는 예제 추가

 

8.  프로젝트를 하면서 고민했던 부분들

더보기

1) Model - singleton 화 시키기 :

  • model부분에 singleton pattern으로 만들어 줄지 고민하다가 만들어줌. 왜냐하면 list를 보여주는 부분은 거의 다 model을 사용할텐데 그러면 계속 instant화 시켜야 하고 그러면 메모리를 많이 잡아먹음. 그럴꺼면 singleton pattern으로 메모리에 넣고 바로 쓸수 있는데 편의성이나 메모리를 아끼는데는 더 효과적일듯

2) Model 분산화 :

  • 처음에는 모든 데이터를 하나의 Model에 넣어주려고 했었으나 생각해보니 너무 많은 데이터가 하나의 model에 있을경우 데이터 수정과정에서 찾기 힘들것 같아서 분산화 결정.

3) 모든 부분에 거의 똑같은 Toolbar 사용

  • BaseActivity를 각 Activity를 상속하게 해 중복되는 코드를 줄임
  • BaseActivity를 넣어주는게 좋은건지를 모르겠음.