【Android】21、活动的启动模式——singleTask

本篇博文最后修改时间:2016年5月18日,22:32。


一、简介

本篇介绍活动的启动模式——singleTask


二、实验平台
系统版本:Windows7 家庭普通版 32位操作系统。

三、版权声明
博主:思跡
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.net/omoiato

联系方式:315878825@qq.com

Java零基础入门交流群:541462902


四、singleTask


singleTop的优点与缺点:

使用singleTop 模式可以很好地解决重复创建栈顶活动的问题

但是如果该活动并没有处于栈顶的位置,还是可能会创建多个活动实例的。


singleTask:

那么有没有什么办法可以让某个活动在整个应用程序的上下文中只存在一个实例呢?

这就要借助singleTask 模式来实现了。当活动的启动模式指定为singleTask,

每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,

如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,

如果没有发现就会创建一个新的活动实例。
我们还是通过代码来更加直观地理解一下。


1、修改AndroidManifest.xml 中FirstActivity 的启动模式

<activity
    android:name=".FirstActivity"
    android:launchMode="singleTask"
    android:label="This is FirstActivity" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>


2、在FirstActivity 中添加onRestart()方法,并打印日志

@Override
protected void onRestart() 
{
    super.onRestart();
    Log.d("FirstActivity", "onRestart");
}

3、在SecondActivity 中添加onDestroy()方法,并打印日志
@Override
protected void onDestroy() 
{
    super.onDestroy();
    Log.d("SecondActivity", "onDestroy");
}

4、重新运行程序,在FirstActivity 界面点击按钮进入到SecondActivity


5、在SecondActivity 界面点击按钮,又会重新进入到FirstActivity


在SecondActivity 中启动FirstActivity 时,会发现返回栈中已经存在一个FirstActivity 的实例,

并且是在SecondActivity 的下面,于是SecondActivity 会从返回栈中出栈,

而FirstActivity 重新成为了栈顶活动,

因此FirstActivity的onRestart()方法和SecondActivity 的onDestroy()方法会得到执行。

现在返回栈中应该只剩下一个FirstActivity 的实例了,按一下Back 键就可以退出程序。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值