2010-03-19 15 views
5

Ich möchte eine Aktivität erstellen, die Orientierungsänderungen unter bestimmten Bedingungen ermöglicht, aber nicht anders. Genauer gesagt möchte ich verhindern, dass die Aktivität neu gestartet wird, wenn ein Hintergrund-Thread beschäftigt ist.Bedingter Neustart bei Aktivität onConfigurationChanged

Ich habe das Attribut configChanges auf das Aktivitätsmanifest gesetzt, und onConfigurationChanged wird aufgerufen, wenn sich die Ausrichtung ändert. Allerdings möchte ich der App erlauben, die Ausrichtung zu ändern, wenn erlaubt.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    if (orientationChangeAllowed) { 
     // how do I restart this activity? 
    } else { 
     // don't do anything 
    } 
} 

Antwort

7

wenn es Anruf erlaubt ist setRequestedOrientation(), wenn es nicht erlaubt ist, nichts zu tun.

Als Tipp: Sie können onRetainNonConfigurationInstance() und getLastNonConfigurationInstance() verwenden und das AsyncThread zurückgeben (ein Objekt enthält). Auf diese Weise ändert die Activity Ausrichtung, wenn der Benutzer möchte. Beachten Sie jedoch: Sie sollten keinen Verweis auf eine Context (kann es eine Referenz auf Ihre Activity oder Drawable, ...) sein.

Verwandte Themen