Android 9

Android 09. Application Class 란?

(1) Application Class 란? 1) Application Class 는 어느 컴포넌트( Activity, Service, Intent 등 )에서나 공유할 수 있는 전역 Class 를 의미합니다. Application 을 상속받은 Class 는 공동으로 관리해야 하는 데이터를 작성하기에 적합합니다. 2) Class 를 만들고 Application Class 를 상속한 뒤, 매니페스트의 application 태그안에 android:name 속성에 Class 의 이름을 등록해서 사용합니다. 3) Application 을 상속받은 Class 는 첫번째 Activity 보다 먼저 인스턴스화 됩니다. 4) 이렇게 애플리케이션에서 공통되게 사용되는 Application 의 자원들은 어디서든 Contex..

Android 2022.06.09

Android 08. Garbage Collection(가비지 컬렉션)

(1) Garbage Collection(가비지 컬렉션 줄여서 GC) 이란? 1) JVM 은 Heap 메모리에 객체를 생성합니다. GC 는 이런 JVM 의 Heap 메모리를 정리하는 알고리즘을 말합니다. 2) 한마디로 GC 는 메모리 관리 기법 중 하나로 메모리 영역 중에서 더 이상 사용하지 않는 영역들을 정리해서 메모리를 관리해주는 기법이라고 할 수 있습니다. 즉, 동적으로 할당된 메모리 영역 중에서 어떤 변수도 가리키지 않는 메모리 영역을 탐지하여 자동으로 해제하도록 해줍니다. 3) 좋은 Java 개발자가 되려면 GC 에 대해 잘 알고 있어야 합니다. 자신이 개발하는 애플리케이션의 특징에 따라 어떤 GC 알고리즘을 선택할 것인지 고민해야 합니다. (2) Garbage Collection 의 동작 원리..

Android 2022.06.07

Android 07. Android Open Source License 종류

(1) Apache License(아파치 라이선스) 1) 이름 그대로 아파치 소프트웨어 재단에서 자체적으로 만든 라이선스입니다. 안드로이드 프레임워크쪽의 대부분의 라이브러리가 이 라이센스 규정에 따르고 있습니다. 2) 아파치 라이선스는 소스코드를 공개할 필요가 없습니다. 3) 아파치 라이선스는 특허권 측면에서 좀더 완성도를 높여서 아파치 라이선스로 출원한 특허에 대해서는 소스코드 사용자에게 특허의 무제한적 사용을 허가한다는 규정이 있습니다. 즉, 어떤 소프트웨어가 아파치 라이선스를 채택해서 배포했다면 그 소프트웨어가 특허출원이 되어 있어도 사용자에게 특허 사용료를 요구할 수 없다는 의미 입니다. (2) MIT License(MIT 라이선스) 1) 이름 그대로 미국의 MIT 공대에서 만든 소프트웨어 라이선..

Android 2022.06.03

Android 06. Platform Architecture(플랫폼 아키텍처)

(1) 아키텍처 구조 1) Linux Kernel(리눅스 커널) Android 플랫폼의 기반은 Linux 커널 입니다. 예를들어 ART(Android 런타임)는 스레딩 및 하위 수준의 메모리 관리와 같은 기본 기능에 Linux 커널을 사용합니다. Linux 커널을 사용하면 Android가 주요 보안 기능을 활용하고 기기 제조업체가 널리 알려진 커널용 하드웨어 드라이버를 개발할 수 있습니다. 2) Hardware Abstraction Layer(하드웨어 앱스트랙션 레이어: 하드웨어 추상화 계층) HAL( Hardware Abstraction Layer )은 상위 수준의 Java API 프레임워크에 기기 하드웨어 기능을 노출하는 표준 인터페이스를 제공합니다. HAL 은 여러 라이브러리 모듈로 구성되어 있으며..

Android 2022.05.30

Android 05. 동기(Synchronous) & 비동기(Asynchronous)

(1) 동기( Synchronous ) 1) 동기란 작업을 수행하고 그 작업이 완료될 때까지 다른 작업을 하지 못하고 기다리는 방식입니다. (2) 비동기( Asynchronous ) 1) 비동기란 어떤 작업을 수행하지만 완료와 상관없이 계속해서 작업을 할 수 있는 방식입니다. 2) 비동기가 필요한 이유 첫번째 이유는 예를 들어 A 라는 애플리케이션에 다운로드와 페이지 닫기 라는 두개의 버튼이 존재한다고 가정했을 때, 두개의 버튼 모두 Main Thread 가 수행하도록 설계했다면 사용자가 다운로드 버튼을 누르는 순간 Main Thread 가 다운로드 작업을 시작하게 되고 페이지 닫기 버튼은 먹통이 될 것입니다. Thread 는 작업을 순서대로 하나씩 처리하기 때문에 그렇습니다. 즉, 사용자가 보고있는 화..

Android 2022.05.26

Android 04. 안드로이드의 가상머신은?

JAVA의 가상머신은 JVM 이다. (1) JVM( Java Virtual Machine ) 1) JVM은 자바 바이트코드를 실행할 수 있는 주체이다. 2) 자바 바이트 코드는 플랫폼에 독립적이며, JVM에 의존적으로 실행된다. 3) 한마디로 플랫폼에 맞춰 소스코드를 빌드 할 필요없이, 한번의 빌드로 여러 플랫폼에서 실행할 수 있다. (즉, Windows, Mac, Linux 어느 플랫폼에서도 JVM만 동작한다면 새로 컴파일 할 필요없이 실행가능) 4) JVM의 특성 스택 기반의 가상머신이다. 단일 상속형태의 객체지향 프로그래밍을 가상머신 수준에서 구현했다. 포인터를 지원하지만, C언어와 같이 주소값을 임의로 조작하는 포인터 연산은 불가능하다. 가비지 컬렉션을 사용한다. 모든 기본타입의 정의를 명확히 함..

Android 2022.05.19

Android 03. 핸들러(Handler)란?

(1) Handler 란? 1) Handler(핸들러) 란 Work Thread 에서 Main Thread 로 메시지를 전달해주는 역할을 하는 Class 입니다. Handler 는 Handler 객체를 만든 스레드와 해당 스레드의 Message Queue 에 binding 됩니다. Message Queue 는 Handler 가 전달하는 Message 를 보관하는 FIFO( First Int First Out ) 방식의 Queue 입니다. 다른 스레드에게 Message 를 전달하려면 Message 를 전달하려는 스레드에서 생성한 Handler 의 post() 와 sendMessage() 등의 메서드를 사용해야 합니다. 그래야 수신대상 Message Queue 에 Message 가 저장되기 때문입니다. Me..

Android 2022.05.19

Android 02. 액티비티(Activity)란?

(1) Activity(작업) 1) Android UI 구성을 위한 가장 기본적인 요소 2) Application 실행 시 반드시 하나 이상 필요 3) 자체적인 그리기 기능이 있어 실행 후 화면을 그리는 것이 아닌, View 혹은 ViewGroup의 다양한 조합을 화면에 배치하여 표시 (2) Life Cycle(실행 – 동작 – 종료) 1) onCreate, onStart, onResume, onPause, onStop, onDestroy, onRestart 7개의 메서드 사용 2) onCreate() - UI 자원 할당 Java의 Main 메서드와 비슷한 역할. Application 실행 시 가장 먼저 호출 View 제작, View 및 Data Binding 진행 이전 상태의 정보를 담은 Bundle ..

Android 2022.05.19

Android 01. 인텐트(Intent)란?

(1) 인텐트(Intent)의 정의 1) 안드로이드 어플리케이션의 4가지 구성요소(Component) 간에 작업 수행을 위한 정보를 전달하는 역할을 합니다. (Activity(화면구성), Service(백단작업), Broadcast Receiver(방송수신), Content Provider(Data공유)) (Intent는 메시징 객체로 다른 앱 구성요소로부터 작업을 요청하는데 사용합니다.) 2) Intent의 사례 Activity 1> Activity의 새 인스턴스를 시작하려면 Intent를 startActivity() 로 전달하면 됩니다. 2> Intent는 시작할 Activity 를 설명하고 모든 필수 데이터를 담습니다. 3> 대표 메서드 1. startActivity(): 새 Activity를 열어..

Android 2022.05.12