Prevent screen rotation on Android
You can follow the logic below to prevent auto rotate screen while your AsyncTask
is running:
- Store your current screen orientation inside your activity using
getRequestedOrientation()
. - Disable auto screen orientation using
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR)
. - Run/execute your
AsyncTask
. - At the end of your
AsyncTask
restore your previous orientation status usingsetRequestedOrientation(oldOrientation)
.
Please note that there are several ways to access Activity
(which runs on UI thread) properties inside an AsyncTask
. You can implement your AsyncTask
as an inner class or you can use message Handler
that poke your Activiy
class.
In your Manifest file, for each Activity that you want to lock the screen rotation add: if you want to lock it in horizontal mode:
<activity ... ... android:screenOrientation="landscape">
or if you want to lock it in vertical mode:
<activity ... ... android:screenOrientation="portrait">