Je ne sais pas si la meilleure solution, mais je la décris ici:
Tout d'abord, vous avez besoin d'un certificat avec votre classe.L'application de votre application est dans votre manifeste de ceci:
<application
android:name=".App"
...
Deuxièmement, dans mon application de classe, j'ai aimé ceci:
public class App extends Application {
public static boolean isOrientationChanged = false;
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onConfigurationChanged(@NotNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ||
newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
isOrientationChanged = true;
}
}
}
Troisièmement, vous devez définir un indicateur sur Changement d'orientation.Dans mon cas, je le définit toujours lorsque l'activité précédente dans la navigation de l'application est appelée, donc n'appelant qu'une seule fois lorsque l'activité ultérieure est créée.
isOrientationChanged = false;
Ainsi, chaque fois que je change l'orientation de mon écran dans ce contexte, je le règle à chaque fois qu'il change ce paramètre, il vérifie s'il y a un changement d'orientation, si c'est le cas, il le valide en fonction de la valeur de cet indicateur.
En gros, je devais l'utiliser chaque fois que je faisais une demande de mise à niveau asynchrone, qu'il appelait à chaque instant qui changeait d'orientation, bloquant constamment l'application:
if (!isOrientationChanged) {
presenter.retrieveAddress(this, idClient, TYPE_ADDRESS);
}
Je ne sais pas si c'est la solution la plus élégante et la plus belle, mais au moins ici, c'est fonctionnel :)
Screen.lockOrientation(this)de github.com/delight-im/Android-BaseLib/blob/master/Source/src/im/… pour cela. Il permet de déverrouiller ce que le manifeste ne fait pas.