4. 안드로이드의 특징 일반적인 애플리케이션 하나의 진입점을 가지고, 하나의 프로세스에서 실행 안드로이드 애플리케이션 액티비티, 서비스, 브로드케스트 리시버, 콘텐츠 프로바이더를 대표적인 컴포넌트로 구성 여러 프로세스로 실행가능 진입점 또한 다양 짧은 시간에 여러 어플과 상호 작용 인스타로 사진찍고 카카오톡으로 공유하는 도중에 전화가 걸려오면? 또는 메모리 부족으로 강제 종료되면? 그래도 사용자는 복귀후 작업을 재개하고 싶을 것이다. (이러한 처리를 잘 해주어야함) 컴포넌트의 생명 주기는 안드로이드 시스템이 제어권을 가지기 때문에 데이터 등을 컴포넌트에 저장하는 것은 치명적일 수 있다. 5. 안드로이드 애플리케이션 설계 원칙 액티비티와 프래그먼트의 클래스 의존성을 최소화하는 것이 좋다. 그 반대의 경우 ..
3. 클린 아키텍처 소프트웨어의 관심사를 계층별로 분리하는 소프트웨어 디자인 철학 주요 원칙 : 코드 종속성이 외부로부터 내부로 의존 내부 계층 코드는 외부 계층의 기능을 알 수 없음 외부 계층에 존재하는 변수, 함수, 클래스 등 모든 엔티티는 안쪽 계층에서 다시 등장 불가 데이터 형식도 계층 간에 별도로 유지하는 것이 좋아 가장 추상 적인 영역은 가장 가운데 있는 녀석 비즈니스 로직을 포함. 플랫폼, 프레임워크에 의존하면 안됨 외부 원은 네트워크, 데이터베이스 접근 등 플랫폼에 특정한 구체적 구현 세부사항이 포함됨. 내부로 갈 수록 추상화 캡슐화 수준이 높아짐 장점 : 계층을 분리. 계층 간의 의존성을 단방향으로 유지. 코드의 재사용성 용이 및 유닛 테스트가 쉬워짐 Entities 전사적 비즈니스 규칙..
1. 애플리케이션 설계란? 구성 요소간 유기적 관계를 표현 요구사항 해결을 위한 계획 및 과정 텍스트, 그림, 다이어그램 등으로 표현 애플리케이션은 일단 구현되고 나면 변경하는데 큰 비용이 듦 잘 설계된 어플리케이션은 유지 보수비를 줄여줌. 성능, 보안, 안정성 등 측면에서 많은 이점이 있음 앱의 경우 미래에 나오는 플랫폼 호환성, 정책 등으로 끊임없는 변화에 대한 대응이 필요함 2. 애플리케이션의 설계 원칙 로버트 C. 마틴의 객체지향 프로그래밍 및 설계에 대한 SOLID 원칙 1. 단일 책임 원칙(Single Responsibility Principle) 모든 클래스는 하나의 책임만 가져야하며, 클래스는 그 책임을 완전히 캡슐화해야 함. 어떤 클래스나 모듈 또는 매서드가 단 하나의 기능만을 가져야 한..
1. 안드로이드 4대 요소 Activity, Service, Broadcast Receiver, Content Provider 정리 안드로이드 앱을 만들고 프로그래밍 하기위해 기본이 되는 개념인 안드로이드 4대 요소인 엑티비티, 서비스, 방송 수신자, 컨텐츠 제공자에 대해서 정리하려고합니다. 🤓 안드로이드의 4대 요소 Activity Service Broadcast Receiver Content Provider 그외 알아두면 좋은 것 Intent View Fragment 아래는 이를 표현한 그림인데 발로그려서 그림 상태가 좋지 않아도 양해바랍니다. 그럼 하나씩 까보도록 하죠. 2. 엑티비티(Activity) 엑티비티는 사용자가 보게되는 인터페이스 화면을 가지고 있는 요소로 UI 화면을 구성하게 되며 ac..
1. 코틀린 버전 1.4 에서 1.5 대로 업데이트 후 코드 작동 안함 얼마전 배포된 코틀린 버전 15.2 을 받고 나서 원래는 1.4.30 버전에서 잘 동작하던 코드가 동작하지 않는 현상을 발견했다. 처음에는 intelij프로젝트 설정을 잘 못한건가 해서 계속 다시만들고 source root directory 도 바꿔가면서 몇 시간동안 삽질을 하였다. 해당 코드는 코테를 보면서 알고리즘 문제를 풀며 작성한 코드로 해당 테스트에서 사용한 코틀린 컴파일러 버전대는 1.3.x 이었던 걸로 기억한다. 불과 1~2주 정도 전이라 나의 ide도 코틀린 1.4 버전대를 사용하고 있어서 문제가 되지 않았다. 문제의 코드 class Solution { fun solution(bricks: IntArray, n: Int..
1. 안드로이드 유튜브 앱 만들어보기 안드로이드 유튜브 앱을 비슷하게 만들어보면서 익혔던 내용들을 정리해보았습니다. ExoPlayer 로 동영상을 재생하는 방법과 모션 레이아웃을 통해서 재생중인 동영상 프레그먼트를 아래로 쓸어 내리면 유튜브와 비슷하게 하단에서 재생이되는 방법을 주로 다뤄 봤습니다. 주요 기능 서버에서 동영상 목록 받아와서 보여주기 메인에서 동영상 항목 클릭 시 하단에 내려져 있던 프레그먼트가 올라오면서 재생 재생 도중 영상 부분을 쓸어 내리면 하단 배너형식으로 재생 및 일시정지 가능 모션 레이아웃, 리사이클러뷰 사이 스크롤이 가능하도록 구현 사용 기술 MotionLayout ExoPlayer mocky 결과 화면 1.1. 기본 레이아웃 구성 기본 메인 레이아웃은 위와 같이 구성되어있으며..
1. Android 화면 회전, 돌려도, 돌아가도 데이터 유지 시키기 엑티비티의 경우 화면을 회전하는 경우 지워지고 다시 만들어지게 되는데 이때 액티비티에 입력되어있는 등의 정보들이 날라갈 수 있습니다. 그렇기 때문에 saveInstanceState에 돌아가기 전의 상태를 저장해두었다가 다시 OnCreate() 시 원복할 필요가 있습니다. 안드로이드 LifeCycle(생명주기)는 6가지의 콜백함수로 관리된다. 화면이 가로/세로 모드 변경될 때 onDestory() 이후 onCreate() 가 다시 불린다. 더 정확히는 onPause() -> onStop() -> onDestory() 로 액티비티가 종료된다. 이후 다시 onCreate() -> onStart() -> onResume() 을 통해 다시 실행..
1. 안드로이드 dp 값을 px 값으로 알맞게 변환해주는 코드 안드로이드 개발 시 dp 값을 사용해서 ui를 나타내게 되면 각 기기의 해상도나 크기마다 알맞은 비율을 유지하면서 디자인을 보여줄 수 있습니다. 하지만 간혹 가다 dp 값이 아닌 px 값을 인자로 받는 매서드를 사용한다던가 px값이 필요한 경우 알맞게 구해주는 것이 필요합니다. 아래 코드는 dp 값을 context의 알맞은 dp값으로 변환해주기 때문에 융통성있게 마찬가지로 px 을 거의 dp 를 사용하는 것 처럼 사용해줄 수 있습니다. px값이 불가피하게 필요한 경우 사용하시면 되겠습니다. private fun dp2px(context: Context, dp: Int): Int { return TypedValue.applyDimension( ..