Android JobScheduler API #2 API21부터 제공하는 JobScheduler에 대하여 이전 포스팅에서 사용방법을 언급했습니다.Android developer page에서 JobScheduler class에 대한 좀더 상세한 API에 대하여 알아보시죠~ OverviewJobInfo로 Job의 type과 실행조건을 만들고 JobScheduler에게 넘겨줌으로써 system이 정해진 조건을 만났을때 App의 application에서 JobService를 실행하도록 합니다.JobService는 JobInfo.Builder()로 등록합니다.또한 Framework은 똑똑하게 가능한 많은 작업을 수행하고 해당 작업을 연기합니다. JobSchedular의 instance는 아래와 같은 방법으로 얻습니다.Context.getSystemService(.. 개발이야기/Android 7년 전
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년 전