안드로이드의 Context

Android의 Context란? Application, Service, Activity 모두 Context를 상속 했다는 사실 알고계셨나요? 공식문서에 나와있는 Context의 개요를 확인해보면, 애플리케이션 환경에 대한 전역정보가 컨텍스트로 연결됩니다. Context는 구현이 Android 시스템에 의해 제공되는 추상 클래스입니다. 애플리케이션 별로 리소스 및 클래스에 대한 접근은 물론 Activity의 실행, 브로드 캐스팅 및 Intent수신과 같은 애플리케이션 레벨에 대한 호출을 허용합니다. 쉽게 더보기…

프레그먼트간 통신하는 3가지 방법

프레그먼트 통신(Fragment Commnication) 안드로이드 공식 문서인 Communicate with other fragments에 프레그먼트간 통신하는 방법에 대해서잘 나와있지만, 저는 또 다른 방법들에대해서 설명하고자 합니다. AAC ViewModel 이용 ViewModel을 이용하면 Activity를 라이플싸이클 오너로 등록하여 공통된 뷰모델을 이용할 수 있습니다.  app레벨의  build.gradle에 다음과 같이 의존성을 추가합니다.

의존성이 추가되었다면 ViewModel 클래스를 이용할 수 있습니다.

더보기…

안드로이드의 PendingIntent란?

PendingIntent PendingIntent는 Intent를 가지고 있는 클래스로, 기본 목적은 다른 애플리케이션(다른 프로세스)의 권한을 허가하여 가지고 있는 Intent를 마치 본인 앱의 프로세스에서 실행하는 것처럼 사용하게 하는 것입니다. PendingIntent 용도 Notification으로 작업을 수행할 때 인텐트가 실행되도록 합니다. Notification은 안드로이드 시스템의 NotificationManager가 Intent를 실행합니다. 즉 다른 프로세스에서 수행하기 때문에 Notification으로 Intent수행시 PendingIntent의 사용이 필수 더보기…

안드로이드의 IntentFilter란?

IntentFilter란? Intent는 명시적 인텐트와 암시적 인텐트로 나뉩니다. 그중 암시적 인텐트를 통해 사용자로 하여금 어느 앱을 사용할지 선택하도록 하고자 할때 IntentFilter가 필요합니다. 예를 들어 사용자가 다른 사람들과 공유했으면 하는 콘텐츠를 가지고 있는 경우, ACTION_SEND라는 Action 있는 인텐트를 생성한 다음 공유할 콘텐츠를 지정하는 Extra를 추가하면 됩니다. 해당 인텐트로 startActivity()를 호출하면 사용자가 어느 더보기…

안드로이드의 Intent란?

인텐트(Intent)란? 인텐트는 컴포넌트(액티비티, 서비스, 브로드캐스트 리시버)간에 통신을 하기 위한 메시지 객체 입니다. Intent를 사용하는 방법은 여러가지가 있지만 일반적으로 3가지입니다. 액티비티의 시작: startActivity(Intent), startActivityForResult(Intent, requestCode) 서비스의 시작: startService(Intent), bindService(Intent) 브로드케스트 전달: sendBroadcast(Intent), sendOrderedBroadcast(Intent), sendStickyBroadcast() 인텐트 유형 명시적 인텐트(Explicit Intent) : 시작할 컴포넌트 이름을 지정합니다. (예: new Intent(context, 클래스이름) 또는 Intent.setClass(context, 클래스이름) 더보기…

ViewGroup과 View의 관계

ViewGroup과 View의 관계 안드로이드의 UI는 ViewGroup과 View의 계층으로 이루어집니다. 타입 설명 View View는 액티비티에서 화면을 구성하는 최소 단위로 화면에 보이는 모든것은 View입니다. 또 다른말로 위젯이라고도 하며 대표적으로 ImageView, TextView, EditText, Button 등이 View를 상속 받아 만든 클래스입니다. ViewGroup n개의 View를 담을 수 있는 컨테이너로 ViewGroup 또한 View를 상속받아 만든 클래스 더보기…

ANR이란? (Android Not Responding)

ANR? 애플리케이션을 개발 하다보면 위 이미지와 같은 ANR 다이얼로그를 종종 볼때가 있습니다. 안드로이드 시스템에서는 일정 시간 사용자와 상호작용이 불가능할 때 애플리케이션의 강제종료를 위해서 ANR 다이얼로그를 호출합니다.  ANR이 발동되는 경우 5초 이내에 터치 이벤트에 대한 응답이 없을 때 브로드캐스트 리시버의 onReceive()가 10초 내에 리턴되지 않을 때 보통 ANR이 발동되는 경우가 MainThread(UI 더보기…

액티비티간 데이터 전달 : Intent와 startActivityForResult()

다른 액티비티로 데이터 전달하기 데이터를 전달하는 방향에 따라 전달방법을 두가지로 나눌 수 있습니다. A Activity에서 B Activity를 호출과 함께 Data 전달 A Activity가 B Activity를 호출한 뒤, B Activity를 종료하며 결과값을 A액티비티로 데이터 전달 다음과 같은 프로젝트 구조가 있다고 가정하겠습니다. 다른 액티비티로 데이터 전달하기 사용자의 텍스트 입력을 받을 수 있는 더보기…

액티비티의 시작과 종료:startActivity() and finish()

액티비티의 시작 다른 액티비티를 시작하려면 Context.startActivity(Intent) 를 이용하면 됩니다. 파라미터로 Intent라는 것이 필요합니다. Intent란? Intent는 컴포넌트간의 런타임 바인딩을 제공하는 객체입니다. Intent는 작업의도를 나타내며 intent객체를 통해 다른 컴포넌트를 실행하고, 메시지를 전달하는 것들이 가능합니다. 먼저 다른 액티비티를 실행하려면 액티비티부터 만들어야겠죠? 다음과 같이 프로젝트 하이얼아키의 최상위에서 마우스 우클릭을 하여 빈 액티비티를 생성합니다. 저는 SecondActivity라고 더보기…

액티비티의 생명주기(Lifecycle of Activity)

액티비티의 생명주기 함수는 입력을 받아 출력을 하고, 프로그램은 실행을 하면 끝이있듯이 액티비티 또한 생성부터 소멸까지 생명주기(Lifecycle)가 존재 합니다.  Activity 클래스는 생명주기와 관련된 몇가지 콜백 메소드를 갖습니다. 이러한 콜백을 통해 개발자가 액티비티가 어떻게 동작할 것인지, 사용자가 이 액티비티를 떠난다면 어떻게 할것인지, 다른 화면으로 갔다가 다시 이 액티비티로 진입하면 어떻게 할것인지에 대한 더보기…