본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] JobStatus.getUID NullPointerException

by 돼지왕 왕돼지 2018. 4. 28.
반응형

[android] JobStatus.getUID NullPointerException


acknowledgeStopMessage, alarmmanager, crash report, java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.android.server.job.controllers.JobStatus.getUid()' on a null object reference, jobscheduler, jobscheduler npe, jobstatus getuid exception, jobstatus getuid npe, jobstatus getuid nullpointerexception, Los, mos, mos mr2, Synchronization, [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:145)

   at android.app.ActivityThread.main(ActivityThread.java:5942)

   at java.lang.reflect.Method.invoke(Native Method)

   at java.lang.reflect.Method.invoke(Method.java:372)

   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)

   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.android.server.job.controllers.JobStatus.getUid()' on a null object reference

   at android.os.Parcel.readException(Parcel.java:1546)

   at android.os.Parcel.readException(Parcel.java:1493)

   at android.app.job.IJobCallback$Stub$Proxy.acknowledgeStopMessage(IJobCallback.java:144)

   at android.app.job.JobService$JobHandler.ackStopMessage(JobService.java:183)

   at android.app.job.JobService$JobHandler.handleMessage(JobService.java:136)

   ... 7 more


위와 같은 Exception 이 Crash report 에 계속 올라온다.

주 단말은 JobScheduler 로직을 적용한 OS 중 LOS 와 MOS 에서 발생했다.


Framework 소스 확인 결과 이는 synchronization 이슈로 판단되며, 이는 MOS 6.0.1_r10 ( MR2 ) 에 수정되었다.


따라서 위와 같은 이슈가 자주 발생한다면, 비록 JobScheduler 가 LOS 에서부터 추가되었지만,

LOS 까지는 AlarmManager 를 사용하는 방식으로 구현하는 것을 권장한다.


MOS 는 MOS 초기버전에서는 이슈가 동일하게 발생하지만, MR2 까지는 제조사가 제대로 대응해줬을 것이라 생각하고 JobScheduler 를 사용할지 아니면 MOS 까지 AlarmManager 를 사용할지는 Crash report 비중과 개발자의 선택에 맡겨야 할 것 같다.




반응형

댓글