새로운 안드로이드 백그라운드 실행 정책

https://android-developers.googleblog.com/2018/10/modern-background-execution-in-android.html 안드로이드 공식 블로그 내용을 번역한 글 입니다. 의역 및 오역 다수 있을 수 있습니다. 안드로이드 백그라운드 실행 정책 애플리케이션은 언제 백그라운드 상태로 있을까? 백그라운드 실행을 이해하기 전에 애플리케이션이 포어그라운드인지 백그라운드인지 명확하게 파악해야합니다. 다음 중 하나라도 해당되면 애플리케이션이 포어그라운드에있는 것으로 간주됩니다. 어떤 애플리케이션이 액티비티가 시작(started),중지(pause)와 상관없이 가시적일 때 어떤 애플리케이션이 포어그라운드 더보기…

안드로이드의 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액티비티로 데이터 전달 다른 액티비티로 데이터 전달하기 사용자의 텍스트 입력을 받을 수 있는 InputActivity가 있다고 가정한다면 다음과 같이 입력한 더보기…

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

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

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

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

Parcelable과 Serializable 비교

Parcelable vs Serializable 종종 앱을 개발하다보면 액티비티와 같은 안드로이드 컴포넌트에 POJO같은 데이터를 전달해야 할 일이 있습니다. 액티비티 객체는 우리가 만들지 않고 안드로이드 시스템에서 관리하고 있으므로 컴포넌트로 데이터를 전달하기 위해서는 반드시 인텐트를 통해서 전달하게 됩니다. Serializable Serial(직렬의) + ~able(~가능한) Serializable(시리어라이저블)은 자바 표준 인터페이스 중 하나로 안드로이드 SDK에 포함되어있지 않습니다. 어쨌거나 전달하고자 더보기…