conditional restart sull'attività onConfigurationChanged
-
21-09-2019 - |
Domanda
Voglio fare un'attività che permette di cambiare l'orientamento a una certa condizione, ma non altrimenti. Più esattamente Voglio evitare che il riavvio l'attività quando un thread in background è occupato.
Ho messo l'attributo configChanges
sul manifesto di attività, e onConfigurationChanged
viene chiamato quando i cambiamenti di orientamento. Tuttavia voglio permettere l'applicazione per modificare l'orientamento quando consentito .
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (orientationChangeAllowed) {
// how do I restart this activity?
} else {
// don't do anything
}
}
Soluzione
se è permesso chiamata setRequestedOrientation()
, quando non è permesso, non fare nulla.
Come un suggerimento: è possibile utilizzare onRetainNonConfigurationInstance()
e getLastNonConfigurationInstance()
e ritorno (un oggetto che contiene) il AsyncThread
. In questo modo il Activity
cambierà l'orientamento quando l'utente vuole. Prendete nota però:. Non si dovrebbe fuoriuscire un riferimento a un Context
(potrebbe essere un riferimento al vostro Activity
o un Drawable
, ...)