onSaveInstanceState()方法,在横竖屏切换或者内存不足时在后台被销毁需要记录一些先前的状态或者数据.
onSaveInstanceState()方法接受一个 Bundle 类型的参数, 开发者可以将状态数据存储到这个Bundle 对象中, 这样即使 activity 被系统摧毁, 当用户重新启动这个 activity 而调用它的 onCreate()方法时, 上述的 Bundle 对象会作为实参传递给 onCreate()方法, 开发者可以从 Bundle 对象中取出
保存的数据, 然后利用这些数据将 activity 恢复到被摧毁之前的状态。
以播放视频为例
MainActivity主要代码部分:
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //此处防止videoView 重复设置
- if (videoView == null) {
- videoView = (VideoView) this.findViewById(R.id.videoView);
- videoView.setMediaController(controller);
- videoView.setVideoPath(PATH);
- videoView.requestFocus();
- }
-
- if (savedInstanceState != null
- && savedInstanceState.getInt("currentposition") != 0) {
-
- videoView.seekTo(savedInstanceState.getInt("currentposition"));
- }
- videoView.start();
-
- }
实现并覆盖onSaveInstanceState方法:
- @Override
- protected void onSaveInstanceState(Bundle bundle) {
-
- bundle.putInt("currentposition", videoView.getCurrentPosition());
- super.onSaveInstanceState(outState);
- }