Per discussion:
1. deviceorientation is still required because we need to know the orientation before animation starts.  mozorientationchange is triggered only after we lock/unlock by app manifest, which happens on animation end.
2. Try detach listener besides app open/close.