Activity的四种启动模式 任务栈


十年生死两茫茫,不思量,自难忘。 ——苏轼《江城子·乙卯正月二十日夜记梦》


任务栈

栈:先进先出
队列:先进先出

打开一个Activity叫进栈,关闭一个Activity叫出栈
我们操作的Activity永远是栈顶的Activity
任务栈是用来维护用户体验的
应用程序退出了,任务栈则会清空
一般情况下一个应用程序对应一个任务栈

    <activity android:name=".MainActivity" 
              android:launchMode="singleInstance">   
        </activity>

standrand启动模式

默认模式,每开启一个activity,在任务栈中就进栈一个实例,进栈几个,出栈几个

当两个activity的启动模式都是standrand时
点击open1,open2,open1,open2,返回四次,退出应用程序.


这里写图片描述


SingleTop启动模式

任务栈会检查栈顶的activity,已经打开后,会复用已经在栈顶的实例.

当第二个activity是singletop模式
多次点击第二个activity时,退出只算一次


这里写图片描述


SingleTask启动模式

每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

这里写图片描述

SingleInstance启动模式

会单独开一个任务栈,也是为了节约内存,哪个显示页面在前,任务栈就在队列前


这里写图片描述

启动活动的最佳写法

自己可以定义一个BaseActivity,里面写一些所以activity的特性,也可以用来管理activity的生命周期

public class SecondActivity extends BaseActivity {

    public static void actionStart(Context context, String data1, String data2) {
        Intent intent = new Intent(context, SecondActivity.class);
        intent.putExtra("param1", data1);
        intent.putExtra("param2", data2);
        context.startActivity(intent);
    }
    ……
}
button1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
    }
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值