conditional restart sur l'activité onConfigurationChanged
-
21-09-2019 - |
Question
Je veux faire une activité qui permet de changer d'orientation sur certaines conditions, mais pas autrement. Plus exactement je veux éviter le redémarrage de l'activité lorsqu'un thread d'arrière-plan est occupé.
J'ai mis l'attribut configChanges
sur le manifeste d'activité, et onConfigurationChanged
est appelée lorsque les changements d'orientation. Cependant, je veux permettre à l'application de modifier l'orientation quand on les laisse .
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (orientationChangeAllowed) {
// how do I restart this activity?
} else {
// don't do anything
}
}
La solution
s'il est permis setRequestedOrientation()
d'appel, quand il est pas autorisé, ne rien faire.
En tant que conseil: Vous pouvez utiliser onRetainNonConfigurationInstance()
et getLastNonConfigurationInstance()
et retour (un objet contenant) le AsyncThread
. De cette façon, le Activity
changera l'orientation lorsque l'utilisateur veut. Prenez note cependant:. Vous ne devriez pas fuyez une référence à un Context
(peut-il être une référence à votre Activity
ou Drawable
, ...)