2019独角兽企业重金招聘Python工程师标准>>>

Activity里的onSaveInstanceState()方法,虽然系统会自动调用它来保存Activity的一些数据,但当除它默认要保存的数据外,我们还要保存一些其他数据的时候, 我们就需要覆盖onSaveInstanceState()方法来保存Activity的附件信息。例如在播放视频过程中,横竖屏切换要保持当前播放时间进度,在默认情况下播放时间是不被自动保存的。

写了一个简单的播放视频的例子,在横竖屏切换时保持当前播放进度,效果图:

横屏切换:

mian.xml的代码:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  3. android:orientation="vertical" android:layout_width="fill_parent"

  4. android:layout_height="fill_parent">

  5. <VideoView android:id="@+id/myvideo"   android:layout_width="wrap_content"

  6. android:layout_height="wrap_content" />

  7. </LinearLayout>

MainAcrtivity主要代码部分:

[java] view plaincopy

  1. private VideoView videoView;

  2. private static final String VIDEO_PATH = Environment

  3. .getExternalStorageDirectory()

  4. + File.separator

  5. + "mymovie"

  6. + File.separator + "shenghuaweiji.mp4";

  7. /** Called when the activity is first created. */

  8. @Override

  9. public void onCreate(Bundle savedInstanceState) {

  10. super.onCreate(savedInstanceState);

  11. setContentView(R.layout.main);

  12. Log.v("tag", "onCreate");

  13. if (videoView == null) {

  14. videoView = (VideoView) this.findViewById(R.id.myvideo);

  15. MediaController controller = new MediaController(this);

  16. videoView.setMediaController(controller);

  17. videoView.setVideoPath(VIDEO_PATH);

  18. videoView.requestFocus();

  19. }

  20. if (savedInstanceState != null

  21. && savedInstanceState.getInt("currentposition") != 0) {

  22. videoView.seekTo(savedInstanceState.getInt("currentposition"));

  23. }

  24. videoView.start();

  25. }

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

[java] view plaincopy

  1. savedInstanceState.getInt("currentposition")

获取视频播放时间。

实现并覆盖了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. }

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

这样在横竖屏切换时保证了播放状态,源代码:http://bigcateasymorse.googlecode.com/svn/trunk/save-activity-state1.0/

转载于:https://my.oschina.net/u/1177694/blog/519341

利用onSaveInstanceState()方法保存Activity状态相关推荐

  1. 用onSaveInstanceState()方法保存Activity状态

    https://blog.csdn.net/yuzhiboyi/article/details/7677026 实现并覆盖了onSaveInstanceState方法: [java] view pla ...

  2. 爬虫如何利用session方法保持登陆状态(selenium)

    爬取网站页面时需要登录后才能访问,否则获取不到页面的实际响应数据 有些网站需要我们登陆才能获取访问数据,然而往往登陆页和所要爬取的数据不在同一页面,这里一般都会想到对cookies进行处理的方法,如下 ...

  3. 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析

    作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38297083 一. 相关方法简介 1. 状态保存方法示例 p ...

  4. 【Android 应用开发】Activity 状态保存 OnSaveInstanceState參数解析

    作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38297083 一. 相关方法简单介绍 1. 状态保存方法演示 ...

  5. activity状态的保存和恢复

    activity状态的保存和恢复 一.简介 1.保存activity状态 * 保存activity状态,onSaveInstanceState这个方法会自动保存有ID的组件的状态 * 没有ID的组件或 ...

  6. Fragment Transactions和Activity状态丢失

    本文由 伯乐在线 - 独孤昊天 翻译.未经许可,禁止转载! 英文出处:androiddesignpatterns.欢迎加入翻译组. 下面的堆栈跟踪和异常代码,自从Honeycomb的初始发行版本就一直 ...

  7. HTML5 Canvas save 保存恢复状态

    保存恢复状态 在绘画的时候,经常会有这种情况,本来正在用绿色笔画,突然需要用红色笔画几笔,但画完了之后又要换成绿色笔.如果是在现实中作画,可以把笔蘸上不同的墨水,画了之后又蘸上之前的墨水,或者准备几只 ...

  8. 保存Activity的状态

    如果你想保存Activity的信息(例如,类实例的变量)而又不需要和其它的组件共享的话,你可以调用Activity的getPreferences方法,不用指定一个Preference的名字.对返回的S ...

  9. android生命周期方法,Android零基础入门|Activity状态和生命周期方法

    原标题:Android零基础入门|Activity状态和生命周期方法 前面两期我们学习了Activity的创建和注册.以及启动和关闭,也学会了重写onCraete方法,这些知识在实际开发中远远不够,还 ...

最新文章

  1. Android实现导航菜单左右滑动效果
  2. 【VS开发】模态对话框和非模态对话框
  3. linux基础—课堂随笔_03 SHELL脚本编程基础
  4. Method Not Allowed一例
  5. 【机器学习实战】——常见函数积累
  6. LeetCode 1717. 删除子字符串的最大得分
  7. oracle切换sqlserver,ORACLE语法转换成sqlserver,该如何解决
  8. mit oracle 350平衡线,MIT MI-350 CVT 平衡线_已售器材欣赏区_信谊音响_二手音响_音响发烧站_高级音响 - 音响贵族网...
  9. 谈谈对水晶报表的看法
  10. SAP License:MM常用事物码
  11. 怎么让某段css代码只在Chrome 火狐 edge 浏览器生效
  12. add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'
  13. 计算机考试数据库相关知识点,计算机等级考试四级数据库工程师知识点总结
  14. Docker 安装 Redis 并配置 Docker 方式的 phpRedisAdmin
  15. 软件测试(测试用例)—写用例无压力
  16. 安卓开发 JAVA环境配置
  17. 统计学基础知识梳理(一)
  18. 基于交换芯片的五元组过滤功能
  19. 基于LabVIEW的电阻合格率检测装置仿真设计
  20. [易水寒]大一实训笔记 第二篇

热门文章

  1. 经济学人: 低调应用, 高调回报, 亚马逊才是AI技术最大受益企业
  2. 一场科技盛宴,一次“盈”满天下 安创成长营五期Demo Day完美收官
  3. 埃森哲:2018年科技愿景
  4. 全球知识图谱专家分布、研究流派(附学者名单)
  5. 产业丨一文读懂人工智能产业链,未来10年2000亿美元市场
  6. Python 之父立 Flag:明年要把 Python 速度提高 2 倍!
  7. 情人节,你刚表白,而我已经开始选哪里拍婚纱照了~
  8. 计算机毕业生“一看就想留下”的简历
  9. 为了提升续航,马斯克又引发一场“造芯”革命,华为比亚迪已进场
  10. linux中根目录下各个目录的作用