http://developer.android.com/guide/topics/resources/runtime-changes.html. można mieć patrząc na link pod nagłówkiem Handling Configuration zmienić siebie
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
Teraz, gdy jeden z tych składów zmienić, MyActivity nie restart. Zamiast tego MyActivity odbiera wywołanie onConfigurationChanged(). Ta metoda jest przekazywana do obiektu Configuration, który określa nową konfigurację urządzenia.
android:configChanges="orientation|screenSize" (andorid 3.2 and above screen size also changes. add this)
Załóżmy, że Twoje wideo ma 10 minut. Film jest odtwarzany do 5 minut i zmiany orientacji, wiesz, że grał do 5 minut.
Możesz zapisać rzeczywisty postęp wideo w trybie onSaveInstanceState() i uzyskać zapisane dane w onRestoreInstanceState() z Pakietu, po czym możesz rozpocząć grę z danymi postępu lub od początku, jeśli było żadne dane nie zostały zapisane.
Po zmianie orientacji działanie jest niszczone i odtwarzane. Jeśli chcesz, aby zapisać dane i zachowują można zrobić jak poniżej do zapisywania duży zestaw danych
@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();
}
}
Dla małego zbioru danych
@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
}
Aby sprawdzić orientacja
@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. W takim przypadku wideo jest przesyłane strumieniowo z serwera. Sprawdź, czy odpowiedź została zaakceptowana (odpowiedź typu commonsware). Dokładnie tak samo sugerowałem.
Nie możesz. Jak działa ten system. Musi ponownie wykonać dużo pracy i po prostu niszczy działanie, aby je odtworzyć. –
Proszę odnieść się do tego: http://stackoverflow.com/questions/8032475/oncreate-is-called-twice-after-the-device-is-rotated –