关闭

Activity启动模式

128人阅读 评论(0) 收藏 举报
分类:
1, 在清单文件中<activity/>标签内部, 设置属性 android:launceMode=""
    支持四种属性:
        standard   标准模式, 默认的启动方式
        singleTop  栈顶单例模式
        singleTask 栈中单例模式
        singleInstance  全局单例模式
    作用:  内存的优化, 用户的体验

    1.1, standard  标准模式, 默认启动模式
       (拿来主义)  同一个Activity每次都会创建一个新的实例

    1.2, singleTop
       (拒绝堆叠)  同一个Activity可以实例化多次, 但是栈顶只能出现一个
       当栈顶不存在要启动的Activity实例时, 系统会创建一个新的Activity实例,并且放入栈的顶端
       当栈顶存在要启动的Activity实例时, 系统会调用onNewIntent()方法,把Intent对象传递给已经存在的Activity实例, 重用栈顶的Activity

    1.3, singleTask  浏览器
       (独立门户)   同一个Activity实例在栈中只能有一个
       当栈中不存在要启动Activity实例时, 系统会创建一个新的Activity实例, 并且放入栈的顶端
       当栈中已经存在要启动的Activity实例时, 系统会调用已存在的Activity的onNewIntent(),
        把Intent对象传递给已经存在的Activity实例(并不会创建新的实例),
        并且不允许栈的上方出现其他的Activity实例,它上方的Activity实例将会被移出栈中,销毁
        
     1.4, singleInstance
            (孤独寂寞) 
        当使用这种模式启动Activity时, 系统会分配一个当独任务, 并将 Activity的实例放入栈的底端
        他不允许其他的Activity实例和他共享一个栈

  2, 第二种方式:  在代码设置, Activity类中设置, 通过Intent对象设置

    intent.setFlags(.....);
    Intent.FLAG_ACTIVITY_SINGLE_TOP   等同于属性中的singleTop
    Intent.FLAG_ACTIVITY_CLEAR_TOP
    同sigleTask 相似, 当栈中不存在时创建; 如果存在那么会把它以及之上的所有实例移除,并且销毁.  创建一个新的实例放入栈的顶端
    Intent.FLAG_ACTIVITY_NEW_TASK
    必须要在清单文件的<activity/>标签中增加属性:
      android:taskAffinity="com.other"
      android:alwaysRetainTaskState="true"
     只有增加了这两个属性, 系统才会为当前的实例创建新的任务, 并且放到栈的底部, 否则等同于没有设置

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Activity——简介和使用

Android为我们提供了四种应组件,分别为Activity、Service、Broadcast receivers和Content providers,这些组建也就是我们开发一个Android应用程序的基石。系统可以通过不同组建提供的切入点进入到开发的应用程序中。对用户来说不是所有的组建都是实际的...
  • zy1235678
  • zy1235678
  • 2014-03-08 19:19
  • 4498

我眼中的Activity的工作过程

我们都知道平常在使用Activity的过程中,只需要我们调用Activity的startActivity方法,传入适当的参数就可以启动一个我们想要启动的Activity了,但是你知道这个过程中经历了些什么吗?今天我想从FrameWork层面解释下从系统启动到显示出我们的第一个Activity的整个过...
  • hzw19920329
  • hzw19920329
  • 2016-08-29 15:44
  • 1800

Activity之间、Fragment之间和Activity与Fragment之间的跳转

1、Activity之间的跳转有两种: (1)不需要返回值的跳转:startActivity(new Intent(this, Activity.class)); (2)带返回值的跳转: ActivityA中:startActivityForResult(new Intent(this, Activ...
  • wpj1119245135
  • wpj1119245135
  • 2016-04-14 16:32
  • 12068

Activity之间传递数据的方式及常见问题总结

Activity之间传递数据一般通过以下几种方式实现: 1. 通过intent传递数据 2. 通过Application 3. 使用单例 4. 静态成员变量。(可以考虑WeakReferences) 5. 持久化(sqlite、share preference、file等)
  • Rflyee
  • Rflyee
  • 2015-08-12 11:39
  • 6895

Eclipse新建Activity并启用(一):新建Activity步骤

在APP中创建一个新的Activity需要下述三个步骤: 1. 定义一个新类,继承Activity: 定义一个类:SecondActivity 2 继承Activity并且复写OnCreat:这部分都是手动敲码 2.1 复写O...
  • phenixyf
  • phenixyf
  • 2016-04-18 17:30
  • 8295

Android中一个Activity关闭另一个Activity或者在一个Activity中关闭多个Activity

Android中一个Activity关闭另一个Activity或者在一个Activity中关闭多个Activity,不涉及到应用的退出。
  • qq_27376951
  • qq_27376951
  • 2017-06-28 21:36
  • 595

Android中半透明Activity效果另法

在做项目时,常需要用到对话框之类的效果,然而对话框不容易写,所以就想写个半透明的Activity来代替对话框效果,这样的好处至少有三个: 一:布局容易 二:各种控件容易控制 三:代码简练:不至于将控制对话框的代码写在一坨,各种控制也不用写在一坨,易于维护 而现在在网上搜索半透明的Activity时,...
  • sunalongl
  • sunalongl
  • 2014-03-05 14:53
  • 3307

Android动态加载黑科技 动态创建Activity模式

基本信息 Author:kaedea GitHub:android-dynamical-loading 代理Activity模式的限制 还记得我们在代理Activity模式里谈到启动插件APK里的Activity的两个难题吗,由于插件里的Activity没在主项目的M...
  • axi295309066
  • axi295309066
  • 2016-08-17 17:00
  • 764

工作流Activity框架入门(一)

Activity工作流入门 1. 工作流概念 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。   ...
  • Evan_Leung
  • Evan_Leung
  • 2016-06-05 23:02
  • 6345

activity向另一个activity中的fragment传值

在学习和项目运用中会用到activity想另一个activity中的fragment传值,在网上看了很多前辈的帖子,自己总结写了个传值方式。举个例子,在一个商场的app中,主界面中嵌套了4fragment,中有一个是个人中心,点击个人中心的登录按钮跳到登录界面,在吧登录界面的用户名传回个人中心,有很...
  • qq_30710615
  • qq_30710615
  • 2016-02-24 17:39
  • 1638
    个人资料
    • 访问:112038次
    • 积分:2077
    • 等级:
    • 排名:千里之外
    • 原创:114篇
    • 转载:27篇
    • 译文:0篇
    • 评论:14条
    最新评论