Print spooler crash when printing after a rotation.

1. Available printers are provided by a loader driven by the activity
   lifecycle. After a rotation of an app that does not handle rotation
   the print activity is destroyed in a delayed fashion. When another
   print task is started the loader of the destroed activity gets two
   cancellations, one when the activity is stopped and one when it is
   destroyed but when the second cancellation happens the loader has a
   bad state that it is loading while it is not and a NPE occurs.

2. If a rotation happens early before the print activity is fully initialized
   (there are asyncrconous operations that take place) we get a NPE as
   the print preview controller is not created yet.

3. A lockup of the print preview process occurs if the print print
   activity is destroyed after we initiated binding to the rendering
   service but before we receive the remote interface. In this case no
   remote service is received as exepcted since we already unbound from
   it resulting in a missed signal.


Change-Id: I81817d81702f649ded97dfbab7d7bba28f22fa91
3 files changed