http://developer.android.com/guide/topics/resources/runtime-changes.html. Sie können auf den Link unter der Überschrift Handhabung eine Suche haben die Konfiguration ändern Yourself
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
Wenn nun eine dieser beiden Konfigurationen ändern, MyActivity nicht neu gestartet. Stattdessen erhält MyActivity einen Aufruf von onConfigurationChanged(). Diese Methode wird an ein Configuration-Objekt übergeben, das die neue Gerätekonfiguration angibt.
android:configChanges="orientation|screenSize" (andorid 3.2 and above screen size also changes. add this)
Angenommen, Ihr Video dauert 10 Minuten. Das Video wird bis zu 5 Minuten abgespielt und die Ausrichtung ändert sich. Sie wissen, dass es bis zu 5 Minuten gespielt hat.
Sie können den aktuellen Fortschritt des Videos in onSaveInstanceState() speichern und die gespeicherten Daten in onRestoreInstanceState() aus dem Bundle abrufen, danach können Sie die Wiedergabe entweder mit den Fortschrittsdaten oder von Anfang an starten, falls vorhanden keine Daten gespeichert
Wenn die Ausrichtung geändert wird, wird die Aktivität zerstört und neu erstellt. Wenn Sie möchten, Daten speichern und behalten können Sie für das Speichern von großer Menge von Daten, wie unten tun
@Override
public Object onRetainNonConfigurationInstance() {
final MyDataObject data = collectMyLoadedData();
return data;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance();
if (data == null) {
data = loadMyData();
}
}
Für kleine Menge von Daten
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
savedInstanceState.putString("NICK_NAME", Name);//save nick name
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore UI state from the savedInstanceState.
// This bundle has also been passed to onCreate.
Name = savedInstanceState.getString("NICK_NAME");//restore nick name
}
Orientierung Um zu überprüfen,
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
VideoView in Android. In diesem Fall wird auch Video vom Server gestreamt. Überprüfen Sie die angenommene Antwort (Commonsware-Antwort). Genau das gleiche habe ich vorgeschlagen.
Sie können nicht. Es ist wie das System funktioniert. Es muss viel arbeiten und zerstört die Aktivität, um sie neu zu erstellen. –
Bitte beachten Sie folgendes: http://stackoverflow.com/questions/8032475/oncreate-is-called-twice-after-the-device-is-rotated –