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简说的更多相关文章

  1. 简析Window、Activity、DecorView以及ViewRoot之间的错综关系

    一.职能简介 Activity Activity并不负责视图控制,它只是控制生命周期和处理事件.真正控制视图的是Window.一个Activity包含了一个Window,Window才是真正代表一个窗 ...

  2. Android——Activity的简绍

    Activity Activity的运行机制其实和JavaEE中的servlet很像,而我们的Android系统也就相当与其servlet容器,Activity在其中进行创建实例.初始化.运行.销毁等 ...

  3. RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  4. Android之Activity跳转

    简述 如果把每个activity看成一个页面的话,那么activity之间的跳转和页面的之间的跳转基本上是一样的.首先需要监听一个事件,当这个事件发生的时候,就进行跳转.html中有个<a sr ...

  5. 如何启动另一个Activity

    --------siwuxie95 首先为res->layout下my_layout.xml 的Design添加一个Button,进入Text, android:text 修改为:启动另一个Ac ...

  6. 极简Unity调用Android方法

    简介 之前写了篇unity和Android交互的教程,由于代码里面有些公司的代码,导致很多网友看不懂,并且确实有点小复杂,这里弄一个极简的版本 步骤 废话不多说,直接来步骤吧 1.创建工程,弄大概像这 ...

  7. Android RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  8. 我的Android 4 学习系列之创建应用程序和Activity:Manifest、Application、Activity

    目录 介绍Android应用程序组件,以及使用这些组件构建的各种Android应用程序 Android应用程序的生命周期 如何创建应用程序Manifest 如何使用外部资源提供对位置.语言和硬件配置的 ...

  9. Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)

    Android应用--简.美音乐播放器获取专辑图片(自定义列表适配器) 2013年7月3日简.美音乐播放器开发 第二阶段已增加功能: 1.歌词滚动显示 2.来电监听 3.音量控制 4.左右滑动切换歌词 ...

随机推荐

  1. Matlab -- Portfolio

    1.创建空 p = Portfolio; 2.需要了解 均值,方差,协方差实现 X为矩阵 均值 = mean(X): 中位数 = median(X): 方差 = var(X): 标准差 = std(X ...

  2. My Team——面向对象与软件工程实验三

    My Team 一.Name GDTX(团队成员姓氏的拼音首字母组成) 二.项目描述 微信小程序(小洁便签): 1,功能齐全:小洁便签具有大多数便签APP所具有的添加.查看.修改和删除便签内容以及插入 ...

  3. Jekyll博客添加Valine评论

    Jekyll博客添加Valine评论 关于github搭建jekyl博客,在这里不做过多描述,详情参考: 百度搜索关键字:github搭建jekyll博客 官网:https://www.jekyll. ...

  4. 版本控制commit和update过程

    很早就使用了git.后来还管了一个VSS,但长时间以来git和VSS基本都当ftp使用,顶多知道其有回退旧版本的功能,但对“版本控制”这个词一直以来都没领会其内含. 比如我一直担心两个问题,一是拉取下 ...

  5. Linux Shell函数定义与调用

    一.Shell函数定义格式 shell函数定义格式,各部分说明如下: [ function ]等中括号括起来部分----表示可选(即可有可无) your_function_name部分----为函数名 ...

  6. jq鼠标事件

    鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的.   (1)click单击鼠标事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发.        $('p').cl ...

  7. idea新建maven工程没有artifacts

    原理,是因为没把新创建好的maven项目给设置成一个可被tomcat部署的web项目 选择个项目路径 配置artifacts,引入到tomcat就可以

  8. number类型精度分析

    numbe类型的可设置的取值范围: number无限定 number(6)是6位整数 number(6,2)是4位整数,精确到两位小数,最多6位.四舍五入 number(6,-2)是6位整数,精确到百 ...

  9. 爬取字段和图片 spider_getModelInformation

    import urllibimport urllib2import re class Spider: def getPage(self,pageIndex): url="http://mm. ...

  10. 类型限定词——const

    类型限定词有三个:const  volatile restrict. const:一般也叫常量修饰符. 作用:是修饰变量,被修饰的变量就变成常量了,不能被二次修改了. const int a=12:a ...