用onSaveInstanceState()方法保存Activity状态

Posted 君子求诸己

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用onSaveInstanceState()方法保存Activity状态相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/yuzhiboyi/article/details/7677026

实现并覆盖了onSaveInstanceState方法:

[java] view plaincopy
 
 
  1. @Override  
  2. protected void onSaveInstanceState(Bundle outState) {  
  3.     // TODO Auto-generated method stub  
  4.     outState.putInt("currentposition", videoView.getCurrentPosition());  
  5.     Log.v("tag", "onSaveInstanceState");  
  6.     super.onSaveInstanceState(outState);  
  7. }   
  1.   
  2. /** Called when the activity is first created. */  
  3. @Override  
  4. public void onCreate(Bundle savedInstanceState) {  
  5.     super.onCreate(savedInstanceState);  
  6.     setContentView(R.layout.main);  
  7.     Log.v("tag", "onCreate");  
  8.      
  9.     if (videoView == null) {  
  10.         videoView = (VideoView) this.findViewById(R.id.myvideo);  
  11.         MediaController controller = new MediaController(this);  
  12.         videoView.setMediaController(controller);  
  13.         videoView.setVideoPath(VIDEO_PATH);  
  14.         videoView.requestFocus();  
  15.     }  
  16.   
  17.     if (savedInstanceState != null  
  18.             && savedInstanceState.getInt("currentposition") != 0) {  
  19.   
  20.         videoView.seekTo(savedInstanceState.getInt("currentposition"));  
  21.     }  
  22.     videoView.start();  
  23.   
  24. }  

onCreate方法中的参数savedInstanceState就是保存的Activity一些状态。

[java] view plaincopy
 
 
  1. savedInstanceState.getInt("currentposition")  

获取视频播放时间。

红色代码是将当前video的播放时间存储在Bundle中。

以上是关于用onSaveInstanceState()方法保存Activity状态的主要内容,如果未能解决你的问题,请参考以下文章

android源码解析(二十四)-->onSaveInstanceState执行时机

onSaveInstanceState() 和 onRestoreInstanceState()

Android onSaveInstanceState()恢复数据

Android-onSaveInstanceState方法啥时候被调用

“在 onSaveInstanceState 之后无法执行此操作” - 为啥我会从我的活动的 onResume 方法中收到此异常?

IllegalStateException: Can not perform this action after onSaveInstanceState 错误解决方法