Activity简说
Activity 四个状态
running 运行:前台显示,当前焦点
paused 暂停:上面被其他activity覆盖,有一部分可见
stopped 停止:被其他activity完全覆盖,不可见
destroyed 销毁:人为或系统销毁,完全销毁
Activity生命周期
onCreate:
onRestart:
onStart:
onResume:
onPause:
onStop:
onDestroy:
从整个生命周期来说,onCreate与onDestroy是配对的,只能调用一次;
从Activity是否可见来说,onStart与onStop是配对的,可多次调用;
从Activity是否在前台来说,onResume与onPause是配对的,可多次调用。
一个完整的生命周期:onCreate->onStart->onResume->onPause->onStop->onDestroy
activityA 启动 activityB的生命周期:A onPause ->B onCreat->B onStart ->B onResume->A onStop
此时back键:B onPause->A onRestart->A onStart->onResume->B onStop->B onDestroy
注意:由上可知,在执行onPause后启动另一个Activity,所以在onPause中不要有过的操作,影响Activity的启动速度
activity异常销毁,横竖屏切换时也会执行
会调用onSaveInstanceState,在onStop之前被调用。可在onSaveInstanceState保存一些数据,通过Bundle把数据传递给下一次启动Activity的onGreat和onRestoreInstanceState
configChanges系统配置改变
android:configChange="***|***"
常用项目:locale;keboard;keyboardHidden;screenSize;orientation;......
系统配置改变时执行 onConfiguragionChange(configuration *)
Activity启动模式LaunchMode
ActivityA,B,C,D
standard:标准模式,A启动B,B启动C,C启动A ,栈内Activity结构 ABCA。不同任务栈启动,每次都会从新创建。
singleTop:栈顶复用模式,一个栈内 A启动B,B启动C,再次启动C。 栈内结构ABC。A启动B,B启动C,在启动B,栈内结构ABCB
singleTask:栈内复用模式,一个栈内 A启动B,B启动C,C启动B。栈内结构AB
singleInstance:单例模式,每启动一个Activity,都是一个新栈。创建是会查看系统内是否已经创建过,如果重建构建过就不在重新创建,否则会新建。
启动模式先找对应的任务栈,然后根据启动模式判断时候重新构建。
前台任务栈AB,后台任务栈CD(启动模式SingleTask)
1,启动D:activity顺序ABCD,back键->ABC->back键->AB
2,启动C:activity顺序ABC,back键->AB
任务栈:TaskAffinity:任务相关性
与SingleTask启动模式或allowTaskReparenting属性配合使用,其他情况下没有意义。
Activity的Flags
Flags有很多,有标记启动模式的,有影响Activity运行状态的。
FLAG_ACTIVITY_NEW_TASK:singleTask启动模式
FLAG_ACTIVITY-SINGLE_TOP:singleTop启动模式
Activity启动方式
显式启动:通过包名和类名启动,不管是不是本应用的activity
隐式启动:通过过滤列表启动:action,category,data
action:字符串,过滤其中可以有多个,只需完全匹配一个就可以
category:字符串,过滤其中可以有多个,只需完全匹配一个就可以。
这个属性可以不写,系统默认android.intent.category.DEFAULT,如果写了最好将这属性添加进去,这样启动时可以缺省category
data:类似action,如果定义intent中必须使用,主要两部组成:mimeType和URI
<activity ...>
<intent-filter>
<action android:name="com.***.a1"/>
<action android:name="com.***.a2"/>
<category android:name="com.***.c1"/>
<category android:name="com.***.c2"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<data android:mimeType="image/jpeg" />
</intent-filter>
</activity>
Intentintent = new Intent("com.***.a1");
intent.addCategory("com.***.c1");
intent.setDataAndType(Uri.parse("file://abc"), "image/jpeg");
startActivity(intent);
Activity简说的更多相关文章
- 简析Window、Activity、DecorView以及ViewRoot之间的错综关系
一.职能简介 Activity Activity并不负责视图控制,它只是控制生命周期和处理事件.真正控制视图的是Window.一个Activity包含了一个Window,Window才是真正代表一个窗 ...
- Android——Activity的简绍
Activity Activity的运行机制其实和JavaEE中的servlet很像,而我们的Android系统也就相当与其servlet容器,Activity在其中进行创建实例.初始化.运行.销毁等 ...
- RecycleView + CardView 控件简析
今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...
- Android之Activity跳转
简述 如果把每个activity看成一个页面的话,那么activity之间的跳转和页面的之间的跳转基本上是一样的.首先需要监听一个事件,当这个事件发生的时候,就进行跳转.html中有个<a sr ...
- 如何启动另一个Activity
--------siwuxie95 首先为res->layout下my_layout.xml 的Design添加一个Button,进入Text, android:text 修改为:启动另一个Ac ...
- 极简Unity调用Android方法
简介 之前写了篇unity和Android交互的教程,由于代码里面有些公司的代码,导致很多网友看不懂,并且确实有点小复杂,这里弄一个极简的版本 步骤 废话不多说,直接来步骤吧 1.创建工程,弄大概像这 ...
- Android RecycleView + CardView 控件简析
今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...
- 我的Android 4 学习系列之创建应用程序和Activity:Manifest、Application、Activity
目录 介绍Android应用程序组件,以及使用这些组件构建的各种Android应用程序 Android应用程序的生命周期 如何创建应用程序Manifest 如何使用外部资源提供对位置.语言和硬件配置的 ...
- Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
Android应用--简.美音乐播放器获取专辑图片(自定义列表适配器) 2013年7月3日简.美音乐播放器开发 第二阶段已增加功能: 1.歌词滚动显示 2.来电监听 3.音量控制 4.左右滑动切换歌词 ...
随机推荐
- 微信小程序的MVVM思想
本文参照:[微信小程序开发]秒懂,架构及框架 同时多看:https://blog.csdn.net/qq_26585943/article/details/54378684 微信小程序开发,主要分清楚 ...
- 2019.3.16数据结构考试(Problem 1. rotinv)(循环逆序对)
Problem 1. rotinvInput file: rotinv.inOutput file: rotinv.outTime limit: 2 secondsMemory limit: 256 ...
- Mac OS X 操作系统下IntelliJ IDEA激活码(Activation code)破解
Mac OS X 操作系统(版本:10.13.6)下载并安装IntelliJ IDEA: Version: 2018.2.4 Download IntelliJ IDEA 下一步对IntelliJ I ...
- Sublime Text3安装evernote插件
关键字 Markdown编辑器.Evernote.Sublime Text3 正文 Sublime Text3安装evernote插件方法如下: 1.使用Package Control安装ever ...
- 微信小程序-列表渲染多层嵌套循环
微信小程序-列表渲染多层嵌套循环 入门教程之列表渲染多层嵌套循环,目前官方的文档里,主要是一维数组列表渲染的案例,还是比较简单单一,给刚入门的童鞋还是无从入手的感觉. <view wx:for= ...
- 找出点的密集区域,javascript实现,html5 canvas效果图
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Scala映射与元组篇
*Scala有十分易用的语法来创建.查询和便利映射 *你需要从可变的和不可变的映射中做出选择 *默认情况下,你得到的是一个哈希映射,不过你也可以指明要树形映射 *你可以很容易地在Scala映射和Jav ...
- 初遇sass的两个小问题
关于sass大家都知道是一种css的开发工具,原本的css没有变量 参数一类的东西,所以比较死 效率较慢. sass就是在css里面加入了一些编程的元素如变量等,让css能够更灵活,提高效率. 刚接触 ...
- JsonP的实现原理?
动态创建script标签,通过script标签中的src跨域属性,连接对方接口,并将回调函数通过接口传递给对方,对方服务器在准备好数据后再通过调用回调函数并以传递参数的方式将数据返回来.
- [Leetcode 40]组合数和II Combination Sum II
[题目] Given a collection of candidate numbers (candidates) and a target number (target), find all uni ...