본문 바로가기
[android] background work(AlarmManager) 수행에 대한 이야기 [android] background work(AlarmManager) 수행에 대한 이야기 https://plus.google.com/+AndroidDevelopers/posts/GdNrQciPwqo -구버전 안드로이드에서는 background work 를 위해서 보통 AlarmManager 를 사용했다.AlarmManager 를 사용하면 앱이 foreground 가 아닌 상황에서도 미래 특정 시점에 어떤 일을 하도록 scheduling 을 할 수 있다. -60초 이내에 무언가를 수행하게 하고 싶다면 AlarmManager 는 best choice 가 아닐 수 있다.이 때는 Handler 를 이용해보도록 하자. -API 21+ (5.0 LOS) 부터는 setAlrmClock() API 를 통해서 user.. 2019. 1. 27.
[android] WakefulBroadcastReceiver 를 알아보자! [android] WakefulBroadcastReceiver 를 알아보자! https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver -우선 시작하기에 앞서 이 녀석은 26.1.0 에서 deprecated 되었으며 그 이유는..Android O 에서 background restriction 이 생겼기 때문이다.그래서 이 녀석 대신 JobScheduler 를 사용하는 것이 권장된다. -이 녀석은 원래 BroadcastReceiver 의 한 형태로, device wakeup event 를 받아서 그 작업 처리를 Service 에 넘기는 역할을 했던 녀석이다. 또한 그 과정중에 device 가 sleep.. 2018. 12. 1.
[android] JobIntentService 소개 (tutorial) [android] JobIntentService 소개 (tutorial) https://medium.com/til-kotlin/jobintentservice-for-background-processing-on-android-o-39535460e060https://developer.android.com/reference/android/support/v4/app/JobIntentService -JobIntentService 는 SupportLib 에 들어있다. -JobIntentService 는 Android O 부터는 JobScheduler 를 사용하고, Android O 이전 단말에서는 background service 를 사용한다. -Android O 이전 단말에서는 background 서비스가 즉각적.. 2018. 11. 28.
[android] Background Optimization ( 백그라운드 최적화 ) -Background process 는 User 가 알 수 없게 cpu, memory, battery 등을 소모한다.Android 7.0 ( API 24 ) 부터는 다음과 같은 제약이 추가되었다. targetSdk 24 이상인 앱의 경우 manifest 에 CONNECTIVITY_ACTION 를 등록해도 broadcast 를 받지 못한다. Context.registerReceiver() 를 통한 Runtime receiver 를 등록한 경우에만 받을 수 있다. 앱은 ACTION_NEW_PICTURE 나 ACTION_NEW_VIDEO broadcast 를 보내거나 받을 수 없다. ( 이것은 Android 7.0 target 이 아닌 단말 기준으로 모든 앱에 작동한다. ) -만약 위에 명시된 Action 들.. 2018. 10. 8.
[도서 정리] 안드로이드 앱 성능 최적화 #3 하드웨어 성능과 배터리 수명 안드로이드 앱 성능 최적화 #3 하드웨어 성능과 배터리 수명 이 글은 “안드로이드 앱 성능 최적화” 의 일부 내용만 정리한 것입니다.자세한 내용은 책을 구매하여 보세요~3.1. 안드로이드의 하드웨어 기능 3.2. 덜 써야 더 쓴다. -구글에서는 단 1초동안 기기가 활성화되어도 2분 동안 대기하는 것과 비슷한 전력을 소모한다고 한다.넥서스 5 기준 대기 시간(LTE 나 와이파이 연결되어 있지만 기기를 사용하지 않음) 은 약 300시간 ( 12.5일 ).그러나 와이파이로 인터넷을 사용하기 시작하면 약 8.5시간 사용 할 수 있다.즉 대략 5분 동안 일반적인 앱을 사용하면 약 1~1.6% 의 배터리가 소모된다.앱이 더 많은 동작을 하면 더 많은 배터리가 사용된다. -광고를 포함한 앱에서 광고만 제거했을 경우 .. 2018. 6. 24.
[android] JobScheduler 호출 flow 분석 [android] JobScheduler 호출 flow 분석 JobScheduler(JobSchedulerImpl ) -JobScheduler 는 abstract class실제 안드로이드 구현체는 JobSchedulerImpl 이며, 이는 constructor 에 전달된 binder 를 통해 통신을 한다. -JobShcedulerImpl 에 전달되는 Binder 는 JobSchedulerService 의 inner class 로 있는 JobSchedulerStub 이다.Stub 에서는 JobSchedulerService 의 여러 함수로 역할을 위임(delegate) 시킨다. JobService-JobService 도 abstract class 로 startJob, stopJob 을 구현하는 Binder .. 2018. 4. 30.
[android] JobScheduler 의 schedule 이 fail 하는 케이스 [android] JobScheduler 의 schedule 이 fail 하는 케이스 Framework 소스 코드 기준은 LOS 5.0.0_r2 ~ MOS 6.0.1_r10 -schedule method 는 RESULT_FAILURE(0) 또는 RESULT_SUCCESS(1) 값 중 하나를 return 한다. -JobScheduler 은 abstract class 이고, 실제 구현 내용은 JobSchedulerImpl 에 있다.해당 코드를 보면 binder 를 통해 schedule 명령을 내리게 되고, 명시적으로 RemoteException 이 발생하면 fail 이 발생한다.@Override public int schedule(JobInfo job) { try { return mBinder.schedul.. 2018. 4. 29.
[android] JobStatus.getUID NullPointerException [android] JobStatus.getUID NullPointerException java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.android.server.job.controllers.JobStatus.getUid()' on a null object reference at android.app.job.JobService$JobHandler.handleMessage(JobService.java:139) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:.. 2018. 4. 28.
[android] Firebase JobDispatcher 문제.. (Job 미실행) [android] Firebase JobDispatcher 문제.. (Job 미실행) - 글을 쓰는 현재 시점 Firebase JobDispatcher ( 이하 FJD ) 는 0.8.5 version - 현재 발생하는 문제는 N 미만 버전 ( not including N ) Google Play Service(이하 GPS) 가 최신버전이 아니면 제대로 동작하지 않는다. 현재 가장 최신 버전 GPS 11.7.44 에서는 제대로 동작하지만.. 심지어 17.05.18 release 된 11.0.47 에서는 Schedule 한 job 이 불리지 않는다… 심각하다.. - JobScheduler 자체는 LOS 부터 사용이 가능하기 때문에, L 미만에서는 Service + Broadcast + AlarmManager.. 2017. 12. 5.
반응형