文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 13:31

关注

启动模式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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯