Search code examples
androidscreen-orientationandroid-orientation

Android: Temporarily disable orientation changes in an Activity


My main activity has some code that makes some database changes that should not be interrupted. I'm doing the heavy lifting in another thread, and using a progress dialog which I set as non-cancellable. However, I noticed that if I rotate my phone it restarts the activity which is REALLY bad for the process that was running, and I get a Force Close.

What I want to do is programatically disable screen orientation changes until my process completes, at which time orientation changes are enabled.


Solution

  • As explained by Chris in his self-answer, calling

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
    

    and then

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
    

    really works like charm... on real devices !

    Don't think that it's broken when testing on the emulator, the ctrl+F11 shortcut ALWAYS change the screen orientation, without emulating sensors moves.

    EDIT: this was not the best possible answer. As explained in the comments, there are issues with this method. The real answer is here.