Activity的状态保存与Intent介绍
来源:互联网 发布:淘宝代销怎么上架 编辑:程序博客网 时间:2024/05/16 11:43
Activity的状态保存
我们开发中有时候会遇到一些情况,当系统内存不足时,我们处于onPause()和onStop的activity实例会被回收,但是我们的activity状态信息并没有保存,那么我们得怎么做呢?
Google为我们提供了onSaveInstanceState(Bundle bundle)方法,bundle参数用于存储需要保存的数据,然后可以在onCreate方法里接受之前保存的数据。我们通过执行一次横竖屏切换destory当前的activity来打印Log验证
public class MainActivity extends AppCompatActivity { private String TAG = "save"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState!=null){ Log.i("save", "" + savedInstanceState.getBoolean("isStore")); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putBoolean("isStore", true); }}
根据google官方的说明,有时候onSaveInstance是不会被回调的,比如用户点击back按钮,用户本身就是想关闭这个activity,所以是不需要保存状态的。
如果想要回调onSaveInstance,最后在onStop和onPause之前。当然google也提到只要给UI控件指定一个唯一id,控件的状态也是可以保存的,例如EditeText的输入内容,CheckBox的选择状态,这些都是不需要用onSaveInstance去保存的。那么,onSaveInstance的基本用法就是这样了。
Intent的介绍以及简单使用
Intent作为一个消息对象,用来连接四大组件之间,是四大组件之间的纽带。
Intent可以开启服务广播之类的就不再赘述了,下面主要探讨下Intent的各个属性的使用。
1)Component name
我们先来看看它的用法:
从参数我们可以看到可以传包名,Class对象等,基本用法大同小异。这与我们平时启动activity功能没什么两样,但是我们可以通过这种方式启动其他应用的activity。当然如果我们启动的别的应用的activity不是入口activity的话,我们还需要在配置android:exported= true;
2)Action和Category
通常我们在使用广播的时候,经常用到action,用来指定接收什么样的广播。而在activity中使用的时候,action通常用来作隐式启动,通过在manifest文件中配置使用,而action通常是与category配套使用的,当多个activity配置了同一个action的话。会出现下图情况:
因为我们配置相同的action,所以启动的时候,出现了这种情况,那么我是否也可以联想到,平时我们打开一个txt文档,会出现多个阅读app选中,那么他们肯定也是配置了同一个action。
3)Data和Type
通过指定数据格式进行不同操作,谷歌官方文档说明指定不同uri使用setData()方法,指定mime类型使用setType()方法,如果你想都使用,请不要分别调用这两个方法,而是直接使用setDataAndType()方法。下面是例子
//setData Intent intent = new Intent(); intent.setData(Uri.parse("tel:15656312312")); startActivity(intent); //setType intent.setType("image/*"); //setDataAndType intent.setDataAndType(Uri.parse("http://www.baidu.com/fadf.jpg"),"image/*");4)Extra
这个平时我们开发用的最多,基本就是在Intent传递时,附带我们要携带的数据。说白了就是传值。
5)Flag
可以给Intent添加不同的flag设置activity的启动模式,以及一些功能,告诉系统如何启动activity。
上述基本就是Intent的基本属性以及功能,如有错误希望各位大神指点,感激不尽。
1 0
- Activity的状态保存与Intent介绍
- Intent与Activity介绍
- Activity状态的保存与恢复
- 保存与恢复activity的状态
- 保存Activity的状态
- 保存Activity的状态
- 保存Activity的状态
- 保存Activity的状态
- Activity的状态保存
- activity的状态保存
- Activity状态的保存
- 保存Activity的状态
- 保存Activity的状态
- activity状态的保存。
- Activity状态的保存
- Activity的状态保存
- Activity的状态保存
- 保存 Activity 的状态
- X264编码流程
- 如何生成OBB(OrientedboundingBox)方向包围盒
- 招标采购过程中如何防范招标风险?
- Java网络编程_基本网络支持(一)
- 【PHP】PHP基础知识与C++、Java等C家族的重点区别
- Activity的状态保存与Intent介绍
- 从0开始学习 GitHub 系列之「07.GitHub 常见的几种操作」
- Android编译系统简要介绍和学习计划
- mybatis实现oracle批量插入,带序列(记录一下)
- android 隐藏键盘的同时要显示edittext的光标
- 405. Convert a Number to Hexadecimal【E】【leetcode】
- HDOJ 5237 Base64
- python 脚本 实现文本中特定字符替换 并扩展成新的文本
- linux之tomcat安装