전체 글 (28)


1. JDK (Java Development Kit, 자바 개발 도구)


자바 애플리케이션을 개발하기 위한 도구들로 이루어진 패키지이다.


-> JRE (JVM, 라이브러리) + Development Tools





2. SDK(Software Developer's Kit, 소프트웨어 개발 도구)


UI 기반으로 특화된 API를 제공하여 개발이 가능하게 도와주는 패키지


자바를 기반으로 안드로이드 에뮬레이터를 내장하여 안드로이드 애플리케이션을 개발할 때 사용한다.





3. NDK(Native Development Kit, 네이티브 개발 도구)


SDK를 사용하여 만든 안드로이드 애플리케이션은 자바를 사용하였기 때문에 자바의 한계점을 가지고 있는데, 그 한계점을 극복하고자 


안드로이드 애플리케이션에서도 C/C++ 을 사용할 수 있도록 제공하는 방법이다.


C/C++을 통해 하드웨어를 직접 제어할 수 있어 임베디드에서도 많이 사용된다.

 안드로이드를 구성하는 기본 4대 컴포넌트 (Activity, Service, BroadCastReceiver, ContentProvider)에 대하여 알아보자.


1. 액티비티(Activity)


액티비티는 어플리케이션의 "하나의 화면"을 의미한다. 음악재생 어플리케이션을 예로 든다면 음악파일 목록 리스트 화면, 음악 즐겨찾기 화면, 음악 재생 및 정지 UI 화면 등등이 각각 하나의 액티비티가 된다.


액티비티는 사용자가 값을 입력하고, 그 결과를 되돌려받는 등 실질적으로 가장 쉽고 많이 접근하는 컴포넌트이기 때문에 가장 신경써야 할 부분이다.




2. 서비스(Service)


사용자와 직접 상호작용을 하는 액티비티와 달리, 화면에 표시되지 않고 백그라운드에서 실행되는 컴포넌트이다. 


예를 들어 음악 재생을 담당하는 부분이 액티비티에 구현되어 있다면, 사용자가 음악을 재생시켜놓고 인터넷 검색을 위해 인터넷을 실행시켰을때 음악 재생이 중지될 것이다. 따라서 인터넷 검색창을 화면에 표시해 놓더라도, 음악 재생은 백그라운드에서 계속적으로 재생되어야 하며, 그것을 담당하는 것이 바로 서비스이다.


혹은 장시간 수행되어야 하는 행동을 백그라운드에서 실행 가능하도록 하는 기능을 한다.


예를 들어 카카오톡 메세지 알림은 사용자가 카카오톡을 실행하여 화면에 띄워놓지 않더라도 언제든지 자신에게 온 메세지를 Notification을 통해 알려주는데, 백그라운드에 카카오톡이 실행되어 있지 않다면 메세지가 온 것을 사용자에게 알려줄 수 없다.



3. 브로드캐스트 리시버(BroadCastReceiver)


시스템의 상태에 관련된 메시지나 어플리케이션의 메시지에 응답하는 역할을 담당한다. 예를 들어 기기의 배터리 부족, 파일 다운로드 완료 등 해당 이벤트가 발생했을때 그것을 캐치한다.


다만 브로드캐스트 리시버 자체는 이벤트를 캐치하는 기능만 담당할 뿐, 사용자에게 이벤트를 알리지는 않는다. 따라서 개발자는 브로드캐스트 리시버가 캐치한 이벤트를 사용자에게 알려주기 위해 Notification 혹은 Toast 를 사용하여 알림을 전달한다.




4. 컨텐트 프로바이더(ContentProvider)


어플리케이션 내의 데이터 (전화번호부의 전화번호, 카카오톡의 메세지)를 다른 어플리케이션과 공유할 수 있는 통로가 된다. A 어플리케이션에서 B 어플리케이션의 데이터에 접근할 때 접근할 수 있는 범위, 방식 등을 정의하여 데이터를 보호하고 공유한다.




https://developer.android.com/guide/components/fundamentals?hl=ko

'안드로이드 개념' 카테고리의 다른 글

[Android] JDK vs SDK vs NDK  (0) 2020.05.16



아래에 적어놓은 것들은 안드로이드 개발하면서, 회사 입사면접 시 알고있어야 할 내용들입니다.



Android 기본 Component (Activity, Service, BroadCastReceiver, ContentProvider)


액티비티 생명주기 LifeCycle


onCreate VS onStart


onPause VS onStop VS onDestroy


프래그먼트 생명주기 LifeCycle


API서버 비동기연동


동기/ 비동기


Database - SQLITE, Room, Realm


SDK/NDK


Reactive 프로그래밍


RxJava (RxJava2 라이브러리)


MVP, MVVM, MVC디자인패턴


Retrofit2, OkHttp3, Glide


Jenkins, Fabric을 이용한 빌드 배포 테스트 자동화


매니페스트 manifest.xml 


Restful api


JetPack


Thread - mainThread, workerThread


Thread VS AsynkTask


쓰레드간 통신방법


메세지 핸들러


Firebase 기능들


인플레이션 inflation


안드로이드 화전회전시 (홈버튼, 휴대폰 전원 off, 전화왔을때)


Serializable vs Parcelable


스크린 사이즈가 다른 기기 대응법


Recycler view VS ListView


Databinding


Context


예전에 만들어놓았던 문제없이 잘 돌아가는 프로젝트가


어느날 포트폴리오 작성을 위해 안드로이드 스튜디오로 프로젝트 열기 했더니 import에서 에러를 미친듯이 뿜어낸다.


한두개 정도라면 그 사이에 뭔가 변화가 있었겠거니... 하겠는데 모든 코드가 에러를 뿜어내서 이건 뭔가 잘못됬다고 판단하여 인터넷 검색 시작!



cannot resolve symbol recyclerview

cannot resolve symbol ~


등으로 프로젝트에 수십개의 에러가 발생한다면


안드로이드 스튜디오 - File - Invalidate Cashes / restart... 로 해결!


SourceTree! (깃 프로그램)


https://sourcetreeapp.com/ 에서 - Download for Windows 클릭


Important information 창이 뜨는데 


I agree to the Atlassian Software License Agreement and Privacy Policy. 체크 후 다운로드 클릭


Bitbucket 선택 후 회원가입!


다음 계속 클릭


그러면 SSH 키를 불러오시겠습니까? 라는 창이 나오는데 "아니오" 선택


그러면 SourceTree가 설치, 실행 완료!