Activity知识点回顾
来源:互联网 发布:nginx配置php虚拟主机 编辑:程序博客网 时间:2024/05/21 06:42
此系列文章为知识点回顾所用,所以,跟网上的一些内容有重复,不过,这里都只记录要点。—– 安卓知识回顾
Activity生命周期
- 完整生命周期见图
- 各生命周期有以下特点
- onCreate-onDestory,分别是创建和销毁,在其中可以做一些初始化及耗时的资源回收等操作。
- onStart-onStop,分别从是否可见来判断
- onResum-onPause,分别从是否位于前台来判断,例如app被遮住或者按了home键都会走onPause。
- onRestart,只有从不可见到可见才会调用,例如Activity被切到后台又唤起的过程:onPause->onStop->onRestart->onStart->onResum.
Activity数据存储和恢复
- 异常情况下会需要保存Activity数据,主要有:按了home键,锁屏,屏幕旋转等。
- 异常情况生命周期:onSaveInstanceState->onDestory。重建过程生命周期:onCreate->onRestoreInstanceState。
- 那我们能够存取些什么类型的数据呢?见下图(基本数据类型,可序列化对象,集合等):
- 存储数据我们在onSaveInstanceState中保存,在onCreate或者onRestoreInstanceState中恢复,需要注意的是onCreate中恢复数据需要做判空处理。
- 并不是所有的Activity的数据都能恢复,比如说笔者公司的应用只有一个Activity,页面使用xml动态解析生成,这样的化就没办法去做数据的恢复。
Activity启动模式
- standrd:每启动一次就创建一个Activity的实例,不管存在与否,使用appliactionContext启动会报错,因为appliactionContext不在默认任务栈中需要,指定FLAG_ACTIVITY_NEW_TASK启动即可;
- singleTop:如果该Activity在栈顶存在,那么再次启动直接复用栈顶的实例,不再创建,onNewIntent方法会被调用,onStart和onCreate不会调用。如果不在栈顶,那么会重新产生一个实例;
- singleTask:这是一个单实例模式,也就是只要栈中存在该实例就不会重新创建,不论在栈顶还是栈中,如果在栈中时会把其上面的部分实例都出栈,同样会调用onVewIntent方法。
- singleInstance:这也是一个单实例模式,只不过与singleTask不同的是,他位于一个单独的任务栈中。
- 启动模式可以在清单文件中配置或者启动Activity的时候添加Flags标识。
IntentFilter匹配规则
- action,制定了action后,启动时必须匹配才可启动,一个组件可以配置多个action作为多个用途。
- category,如果组件中定义了category,必须匹配才可启动,同时必须配置:android.intent.category.DEFAULT,否则找不到该组件。
data,这个未真正用过,只是做匹配用,例子如下
<activity android:name=".SecondActivity"> <intent-filter> <action android:name="com.example.second.action"/> <category android:name="com.example.second.category"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain" android:scheme="http" /> </intent-filter></activity>启动时如下配置即可启动。Intent intent = new Intent();intent.setAction("com.example.second.action");intent.addCategory("com.example.second.category");intent.setDataAndType(Uri.parse("http://abc"),"text/plain");startActivity(intent);
0 0
- Activity知识点回顾
- 知识点回顾
- 知识点回顾
- 知识点回顾
- 知识点回顾
- Android群英传知识点回顾——第八章:Activity与Activity调用栈分析
- Activity 知识点
- 面试知识点回顾
- 汇编语言 知识点回顾
- java 知识点回顾
- c++知识点回顾
- java 知识点回顾2
- C++ 基本知识点回顾
- servlet知识点回顾
- Java知识点回顾一
- hibernate知识点回顾
- Android知识点回顾
- web知识点回顾
- python+Eclipse+pydev环境搭建
- Python Requests库
- Android Studio 快捷键设置 --英文说明+中文对应翻译+快捷键对应
- 集合(京东2017秋招真题)
- Linux新手入门:Unable to locate package错误解决办法
- Activity知识点回顾
- P1063 能量项链
- 直方图均衡化的MATLAB的实现(2)
- 图像处理
- LeetCode024 Swap Nodes in Pairs
- UESTC 1329 卿学姐与魔法
- Linux系统概述
- 修复搜狗没有汉字,获取低版本solr,mybaits返回1却不能写入数据
- lintcode 35 翻转链表