http://developer.android.com/guide/topics/resources/runtime-changes.html。您可以查看“自己处理配置更改”标题下的链接
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
现在,当这些配置之一发生更改时,MyActivity 不会重新启动。相反,MyActivity 收到对 onConfigurationChanged() 的调用。此方法传递一个配置对象,该对象指定新的设备配置。
android:configChanges="orientation|screenSize" (andorid 3.2 and above screen size also changes. add this)
假设您的视频时长为 10 分钟。视频播放到 5 分钟并且方向发生变化,您知道它已经播放到 5 分钟。
您可以在 onSaveInstanceState() 中保存视频的实际进度,并从 Bundle 中获取保存在 onRestoreInstanceState() 中的数据,之后您可以使用进度数据开始播放,或者如果没有保存数据则从头开始播放。
当方向改变时,活动被破坏并重新创建。如果要保存数据并保留,可以执行以下操作以保存大量数据
@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();
}
}
对于少量数据
@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
}
检查方向
@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();
}
}
Android中的视频视图。在这种情况下,视频也是从服务器流式传输的。检查接受的答案(commonsware answer)。跟我建议的一模一样。