title: boot complete broadcast processed serially in KITKAT 4.4.2 <ACTION_BOOT_COMPLETED><ActivityManagerService.java>
body: <p>There seems to be a very important change in the way ACTION_BOOT_COMPLETED broadcast is sent out in the latest android release.
  In JB 4.3, the boot complete broadcast was processed in parallel. Where as in KK 4.4.2 its being processed serially.
  This is delaying the start of services after boot up.</p>
  
  <p><a href="http://androidxref.com/4.4.2_r1/xref/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java#5189" rel="nofollow noreferrer">KITKAT 4.4.2</a></p>
  
  <p><a href="http://androidxref.com/4.3_r2.1/xref/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java#4512" rel="nofollow noreferrer">JELLY BEAN 4.3</a></p>
  
  <p>Because of this change by Google, my service start is being delayed after boot complete.
  One can observe that the device gets sluggish and audio for touch doesn't play-out. All of these because the respective services are starting late.</p>
  
  <p>Also, from the logs I see that the first guy to receive ACTION_BOOT_COMPLETED after its is sent out, is receiving it after 16-19 seconds, where as on JBP it hardly takes 10 milliseconds for the first guy in the receiver-queue to get it.</p>
  
  <p>Could anyone who is aware of this change explain why this was made.
  It would be a great help.</p>
  
  <p>Thanks a lot!</p>