我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android+《火影忍者》活动启动模式以及应用场景的那些事

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android+《火影忍者》活动启动模式以及应用场景的那些事

启动模式1.幼年鸣人偷学禁术:影分身之术 standard2.金色闪光の飞雷神之术:singleTask3.绝技·螺旋丸:singleTop4.尾兽·九尾:singleInstance 1.幼年鸣人偷学禁术:影分身之术 standard

在遥远的火影村,诞生了一个黄色头发的小宝宝,他的母亲给他取名为漩涡鸣人。

android:launchMode="singleTop" 将启动模式定义为singleTop模式

然后这时候鸣人就可以搓丸子了

在这里插入图片描述

在这种状态下,丸子处于栈顶,当我们继续搓来保持这个丸子的时候,就是我们在创建一个同样的活动来让丸子仍然处于栈顶。让我们来写一下代码:

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button Button=findViewById(R.id.button3);
        Button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,MainActivity.class);
                startActivity(intent);
            }
        });
        Log.d(TAG,"正在搓丸子");
    }
}

运行一下:会发现不管我们点击多少次按钮,在Logcat只显示了一次:

2020-03-20 01:33:10.848 23627-23627/com.example.naruto D/MainActivity: 正在搓丸子

这是因为此时丸子一直是处于栈顶的,当我们点击按钮来搓丸子的时候,由于当前栈顶有一个丸子,所以我们仍然搓这个丸子。于是乎这个栈顶就被复用了。这个活动只有一个实例,我们点击一次back就可以返回。
如果我们把这个丸子扔出去,在搓一个其他丸子,那么当我们还想搓这个丸子的时候,由于现在手里是其他丸子,所以我们还得把其他的丸子扔了在去搓丸子才可以。

当活动处于singleTop模式,在启动活动时如果发现返回栈的栈顶已经是该活动,则可以认为直接使用它,不会再创建一个新的活动。但是当这个活动不处于栈顶,那么还需要在重新创建一个新的活动压入栈并置于栈顶位置。

原理图如下:
在这里插入图片描述

应用场景:singleTop适合接收通知启动的内容显示页面。例如,某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦人的,从外界可能多次跳转到一个界面。
摘自 chun_soft

4.尾兽·九尾:singleInstance

鸣人在小时候不知道的是,当初自己的父亲和母亲牺牲自己,将九尾放入他的体内,让他成为了九尾的人柱力。这也就是为什么村民们如此惧怕他。
九尾充满着怨恨,企图控制鸣人。
在这里插入图片描述
但是鸣人用自己的执著和乐观感化了九尾,自此之后,鸣人和九尾并肩作战。在后面甚至可以召唤出体外进行作战。
在这里插入图片描述
这是为什么呢,其实是因为鸣人懂得了singeleInstance模式。
这种模式的特点是:

该模式的活动会启动一个新的返回栈来管理这个活动(如果singleTask模式指定了不同的taskAffinity,也会启动一个新的返回栈)。

这种模式下的鸣人到底有啥厉害的呢?请仔细看这个例子。

在没有这种模式下的鸣人,只能依靠螺旋丸等普通的技能,还远远不到开挂的地步。

鸣人这个活动启动螺旋丸或者影分身是这样的 鸣人->螺旋丸 。
但是!

此时此刻,鸣人拥有了九尾。
这种情况下

鸣人召唤了九尾

鸣人->九尾
九尾作为一个独立的个体,拥有强大的战斗力 甚至可以放尾兽玉这个BUG技能!
但是尾兽玉始终是属于九尾的力量。

于是乎 九尾被放在了一个新的栈中 这个栈就叫九尾不能说的秘密

在这个栈中 九尾->尾兽玉

所以当处于singeleInstance模式下的鸣人,是这样放技能的。
鸣人->九尾->尾兽玉->螺旋丸
在这种情况下 鸣人与螺旋丸在一个栈中,由于鸣人召唤了九尾,九尾和尾兽玉则在一个新的栈中。

那么鸣人这时候要如何停止这个模式呢?

首先点一次back,鸣人收回了螺旋丸

由 4->1 因为此时九尾和尾兽玉并不在这个栈中。
然后在点一次back,这时候鸣人在栈顶,就可以准备回收九尾了,于是乎九尾的栈就显示出来了,栈顶还是尾兽玉呢

由1->3(3是2和3这个栈的栈顶)
在点一次back,尾兽回收了尾兽玉 由 3->2
在点一次back,鸣人回收了尾兽,新生成的栈消失了。2->1
再点一次back,鸣人结束了战斗。 np!!!

原理图如下:
在这里插入图片描述

应用场景:singleInstance适合需要与程序分离开的页面。例如闹铃提醒,将闹铃提醒与闹铃设置分离。

希望大家可以通过这几个小例子理解安卓活动的启动模式之间的区别,很少写博客,写的不是很好,希望见谅。

最后附上名场面:
在这里插入图片描述
一袋米要抗几楼
一袋米要抗二楼
一袋米要我给多嘞
一袋米要有洗尼
口口有泥
谁给你的一袋米楼
辛辣填sei!!!!


作者:Py_csdn_


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android+《火影忍者》活动启动模式以及应用场景的那些事

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android+《火影忍者》活动启动模式以及应用场景的那些事

启动模式1.幼年鸣人偷学禁术:影分身之术 standard2.金色闪光の飞雷神之术:singleTask3.绝技·螺旋丸:singleTop4.尾兽·九尾:singleInstance 1.幼年鸣人偷学禁术:影分身之术 standard 在
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录