I've been bugged by this for a while. How do I properly handle screen orientation changes while I have a separate Thread
/ AsyncTask
running? Currently, I have
android:configChanges="orientation|keyboard|keyboardHidden"
in my AndroidManifest.xml
, but that is not really encouraged:
Note: Using this attribute should be avoided and used only as a last-resort. Please read Handling Runtime Changes for more information about how to properly handle a restart due to a configuration change.
Also, in the 2.3 emulator, it works when switching to landscape
, but switching back to portrait
fails.
Now, the reason why I use configChanges
is because when the user switches orientation, I might have an AsyncTask
running, doing some network traffic, and I don't want it stopped.
Is there any other way of doing this, or is there a way of fixing 2.3 to switch back to portrait?
I know about onRetainNonConfigurationInstance
, but I'm not sure it would be a good idea to "save" the AsyncTask
instance, mainly because the class that extends AsyncTask
is not static (so it is tied to the Activity
) -- and it needs to be, because in onPostExecute()
it calls methods from the Activity
instance.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…