Android Background 작업을 위한 JobScheduler #1 L OS부터 다소 tight하게 background 작업을 제한하기 시작했습니다.N OS에는 더욱 심해 졌고, O OS에서도 더욱 심해지네요. 휴대폰의 성능을 올리고, 배터리 절감 효과를 위해서 background service의 동작을 제한하는 부분들이 점점 강한 압박이 되어 돌아오고 있습니다.O OS에서는 background App이 background service를 수행하지 못하도록 막습니다.좌절이죠..그리고 Foreground service나 JobScheduler를 이용하여 해당 동작을 대체하도록 가이드 하고 있습니다. OverviewJobSchedular는 Job이 완료되는것을 보장합니다.다만 system level에서 동작하기 때문에 다른 앱의로 인하여 background 작업을 수행 할 .. 개발이야기/Android 7년 전
Android Service간 통신 #3 LocalBinder를 이용한 통신이전 글에서는 Activity와 Service간 통신을 위하여 local binder를 이용하여 사용하는 방법을 설명하였다. 이때 사용한 두가지 방법은 아래와 같다 1. Local binder를 이용한 service객체 자체를 넘김. 2. Local binder를 이용하여 handler를 Messenger로 wrapping 한 뒤에 binder로 넘김. 1번의 경우 단방향 통신이 가능하나, 예제에서 처럼 작성시 상호참조가 발생할수 있으니, Service에 추가로 정의된 함수를 호출하기 위한 interface를 하나 구현 하는것이 좋다. ResultReceiver를 이용한 통신여기서는 ResultReciever를 이용하여 단방향으로 Activity 개발이야기/Android 7년 전
Android Service간 통신 #2 IPC / BinderInter Process Communication의 약자로 process간 통신하는것을 말한다. 리눅스 커널에서 Binder을 이용하여 프로세스간 메시지를 주고 받으며, 안드로이드에서는 다른 프로세스의 함수를 호출 (RPC)하는 방법 또한 제공한다. 따라서 안드로이드에서는 독립된 process의 메모리 공간이 아닌 kernel의 공유된 공간을 이용하여 함수를 호출하며 이를 Binder Driver가 수행한다. Parcel / ParcelableBinder는 parcel 형태로 데이터를 전달 하므로, 개발자가 다른 process로 데이터를 전달하기 위해서는 전달하고자 하는 클래스에 parcelable을 implements 하여야 한다. 기존 리눅스 바인더는 primitive type만.. 개발이야기/Android 7년 전
Android Service간 통신 #1 Service의 종류Android의 서비스는 간단히 구분하면, 내부/외부 서비스로 나눠진다. 내부 서비스는 말그대로 앱 안에서 서비스를 호출하는걸 말하고, 외부 서비스는 앱간 호출이 가능한 서비스라고 할 수 있다. 내부 서비스 역시 startService()로 서비스를 띄우는 로컬서비스와 bindService()를 통하여 서비스를 띄우는 bind 서비스로 나눠볼 수 있다. 이 글에서는 내부 bind service에 대해서 다루고자 한다.외부 bind service (RPC)에 대해서는 다음 포스팅에 다룬다. bind Service를 이용한 통신startService()와 bindService()의 차이가 뭘까? srartService()로 서비스를 만드는경우 intent에 번들로 어떤 정보를 전달할 수 .. 개발이야기/Android 7년 전