본문 바로가기

분류 전체보기

(100)
아키텍처를 알아야 앱 개발이 보인다 - 1 1. 앱 설계 원칙 SOLID 1. 단일 책임 원칙 : 모든 클래스가 하나의 책임만 가지고, 그 책임은 완전히 캡슐화 해야함. 어떤 클래스나 모듈 또는 메소드는 단 하나의 기능만 가져야한다 예를 들면, 특정 데이터를 분석하고 서버에 전송하는 모듈 -> (a) 특정 데이터 분석, (b) 서버 전송 같이 분리. 2. 개방 폐쇄 원칙 확장에는 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다는 원칙. ??? 기능 변경과 확장할 수 있으면서, 사용하는 코드는 수정하지 않는다. 상속이나 인터페이스를 통해 기능은 확장하되 코드를 수정하지 않는걸 의미하는듯 예를 들어 차가 있고 트럭, 택시 이런식으로 있다고 한다면 트럭이나 택시가 차를 상속받아서 쓰고 트럭이나 택시별로 차가 가지고 있는 메소드나 기능을 더 구현시..
안드로이드 style guide 2 (coding convention) 프로젝트를 하면서 변수명을 너무 멋대로 지어서 안드로이드 코딩할때의 기준을 잡고 해야할 필요성을 느꼈습니다. 습관이 되기 전까지는 계속 보면서 따라해야할듯 싶습니다. A. Follow Field Naming Conventions 1. Non-public, non-static field 는 m으로 시작 private int mPrivate; protected int mProtected; int mPackagePrivate; 2. Static field 는 s로 시작 private static MyClass sSingleton; 3. 나머지는 소문자로 시작 (public) public int publicField; 4. Public static final fields (상수) 는 모두 대문자로 ALL_CAP..
안드로이드 style guide 1 (Util/Helper) Util/Helper 특정기능을 수행하거나 상태를 관리하거나 코드를 만들어 별도로 관리. 1. Util 앱 전역에서 사용되는 util성 기능을 모아둠. Utils class, is a static class that perform small and repetitive operations on a kind of instance 예) DateFormatUtil, PixelUtil, BitmapUtil, ToastUtil, SharedPreference 등등 전역적으로 사용하면 만들어줌 2.Helper helper class는 특정 클래스의 작업을 도와주는 역할을 하는 클래스로 유용한 기능들을 제공. 특정 패키지나 기능에서 한정되어 사용되는 클래스 공통으로 쓰이지 않고 특정 기능의 코드를 분리하기 위한 용도..
안드로이드 앱 출시과정 1. APK 추출 APK 추출하기 : Build -> Generate Signed Bundle / APK... 중간에 만난 문제들 : (1) 첫번째 문제 : Could not find junit:junit:. Required by: project :app 해결방법 : gradle 파일에서 dependencies 내에서 아래것 주석처리 // testImplementation 'junit:junit:' (2) 두번째 문제 Lint found fatal errors while assembling a release target. android { ... lintOptions { checkReleaseBuilds false abortOnError false } } 2가지 문제 해결후 APK 추출 완료 apk 위치..
Gson 이란??? 안드로이드에서 Retrofit을 공부하다 Gson과 함께 사용되는 것을 보았다. 그래서 Gson이 뭐지???? Gson 이란??? Gson은 자바 객체를 JSON 표현으로 변환, JSON 문자열을 동등한 자바 객체로 변환하는 데 사용할 수 있는 자바 라이브러리 Gson은 json 구조를 띄는 직렬화된 데이터를 JAVA의 객체로 역직렬화, 직렬화 해주는 라이브러리. 즉, 안드로이드에서 네트워크 통신 (okhttp3 혹은 Retrofit)을 통해 JSON 형식의 데이터를 가져오면 하나하나 JSONObject나 JSONArray로 귀찮게 하나하나 나눠주고 불로오고 한걸 쉽게 해준다는 얘기임. 인터넷으로 Retrofit 예제들을 찾아보니 @SerialzedName 개념과, @Expose 개념이 나왔다. @Ser..
Room 데이터베이스 라이브러리 SQLite 원래 Room 데이터베이스 라이브러리가 나오기전에는 SQLite를 사용해서 내부 DB를 만들어 데이터를 저장했었다. 하지만 SQLite 몇가지 단점들이 존재한다. Query의 유효성 검사 기능을 제공하지 못했던 점 Scheme가 바뀔 때 자동적으로 업데이트를 하지 못했던 점 ORM 지원이 안 되어 데이터를 객체로 변환시키기 위해 데이터 처리를 더 해야했던 점 Observer 패턴의 데이터(LiveData, RxJava)를 생성하고 동작시키기 위해 추가적인 Boiler Plate 코드를 작성해야하는 점 이러한 단점들을 보완한게 Room 데이터베이스 라이브러리고 현재는 어플리케이션 내부 DB로 Room을 추천하고 있다. Room DB 안드로이드 앱에서 SQLite를 추상화하여 데이터를 쉽고 편리..
Handler 예제 기초 설명 : https://growing-software-engineer.tistory.com/22?category=1294392 Handler와 Thread를 이용한 (1) Counter 예제와 (2) Animation 예제 추가 Github Background나 멀티쓰레드 환경에서 메인(UI) Thread 이외의 worker Thread에서 UI 변경을 위해 필요한게 Handler라서 그것을 위해 Thread도 추가함.
Intent와 Bundle 예제 Intent와 Bundle 기초 설명 : https://growing-software-engineer.tistory.com/19?category=1294392 명시적 Intent, 암시적 Intent, Bundle (onSaveInstanceState) 예제 추가 Github 명시적 Intent Activity 전환시 정보 주는 예제 PARCELABLE로 객체 전달하는 예제 암시적 Intent 구글뷰 연결 예제 전화 연결 예제 Bundle (onSaveInstanceState) 예제 추가 onSavedInstanceState 이용해서 데이터 저장. (가로세로 화면전환시나 배터리 부족시등 꺼질때 데이터 저장)