首页 > 其他分享 >Activity活动详简总结

Activity活动详简总结

时间:2024-06-09 10:01:22浏览次数:17  
标签:总结 返回 启动 模式 详简 实例 Activity 活动

简介

        活动(Activity是一种可以包含用户界面的组件主要用于和用户进行交互。

一、创建项目New Project

        选择No Activity,创建一个空活动:

         语言选择Java,点击Finish,等待工程加载

二、MainActivity活动类

      找到如下图路径:

        创建MainActivity类继承AppCompatActivity类,并导入onCreate()方法:

        创建布局文件:

        xml布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="欢迎学习"
        android:textSize="59dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.468" />
</androidx.constraintlayout.widget.ConstraintLayout>

        最总代码:

 

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

三、AndroidManifest文件中活动注册

        所有的活动 都要在 AndroidManifest.xml 中 进行注册才能生效,活动的注册声明要放在<application> 标签内,通过<activity> 标签来对活动进行注册的。standard是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种启动模式。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication"
        tools:targetApi="31" >
        <activity android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

四、活动模式launchMode

       standard

                是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种启动模式。在standard模式(即默认情况)下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对于使用standard模式的活动,系统 不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。如下理解图:

               代码:

                

 <activity android:name=".MainActivity"
            android:exported="true"
            android:launchMode="standard">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        singleTop

                                 当活动的启 动 模式指定 为singleTop,在启 动 活 动时 如果 发现 返回 栈 的 栈顶 已 经 是 该 活 动 , 则认为 可以直接使用它,不会再创 建新的活 动实例。每当想要再启动一个Activity时都会直接使用栈顶的活动,因此Activity也只会有一个实例,仅一次就可以退出程序。不过当Activity并未处于栈顶位置时,这时再启动FirstActivity,还是会创建新的实例的。 如下理解图:                 代码:                         
  <activity android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

              singleTask

                        singleTop模式可以很好地解决重复创建栈顶活动的问题,借助singleTask模式来实现 了。当活动的启动模式指定为singleTask,每次启动该活动时系统首先会在返回栈中检查是否存 在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。如下理解图:

                        代码:

                                

<activity android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

                       singleInstance

                                        不同于以上3种启动模式,指定为singleInstance模式的活动会启用一个新的返回栈 来管理这个活动(其实如果singleTask模式指定了不同的taskAffinity,也会启动一个新的返回栈)。假设我们的程序中有一个活动是允许其他程序调用的,如果我们想实现其他程序和我们的程序可以共享这个活动的实例,应该如何实现 呢?使用前面3种启动模式肯定是做不到的,因为每个应用程序都会有自己的返回栈,同一个活动在不同的返回栈中入栈时必然是创建了新的实例。而使用singleInstance模式就可以解决这个问题,在这种模式下会有一个单独的返回栈来管理这个活动,不管是哪个应用程序来访问这个活动,都共用的同一个返回栈,也就解决了共享活动实例的问题。如下理解图:

                                代码:             

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​   
<activity android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleInstance">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

五、最终效果

标签:总结,返回,启动,模式,详简,实例,Activity,活动
From: https://blog.csdn.net/m0_74225871/article/details/139531649

相关文章

  • C语言学习总结2——基本数据类型及其声明
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1、整型家族2、浮点类型3、指针4、声明5、typedef6、常量前言在C语言中,仅有4种基本数据类型一整型、浮点型、指针和聚合类型(如数组和结构等)。所有其他的类型都是从这4种基本类型的某种组......
  • journalctl 命令使用总结
    转载请注明出处:journalctl 命令是Linux系统中一个用于查询和管理系统日志的命令行工具,它基于 systemd 的日志守护进程 systemd-journald 的功能。1.介绍journalctl 命令可以帮助用户查找、过滤和分析系统日志。这些日志信息包括内核消息、系统服务日志、用户登录......
  • CTF-流量分析题型总结(1)
    目录一、流量包修复二、WEB流量包分析(1)判断黑客使用的扫描器(2)黑客入侵,确认黑客登录的后台(3)黑客登录的账号和密码(4)黑客上传文件webshell提交webshell内容(5)黑客在某文件中找到的flag是什么(6)找到黑客数据库密码(7)黑客数据库中hash_code是什么(8)被攻击的web服务器,网......
  • 对题目集4~6的总结
    1.前言答题判题程序-4是前几次题目迭代,在前几次的基础上新增加了选择、填空题,按照之前的思路拓展即可。家居强电电路模拟程序-1、2总体难度适中,不过与普通的信息处理相比,分配电压要考虑更多情况。2.设计与分析答题判题程序-4点击查看题目设计实现答题程序,模拟一个小型......
  • [方法论]再论如何读书——对过去阅读的总结与对未来的要求
    前言陆爻齐在以前曾花心思读了不少关于“如何阅读”这个主题的书,有时对某条表示“顿悟”,然后做了几次就往在一边,什么笔记法啊,阅读法啊,大多十分的繁杂,连把整个流程走完一边都十分繁琐无聊,坚持下去于陆爻齐而言就是天方夜谭。在偶然瞥见某篇文章时,突然又有所顿悟,希望能把这个简单的......
  • 柔性数组+总结C/C++中程序内存区域划分
    柔性数组一.柔性数组1.柔性数组的定义2.柔性数组的特点3.柔性数组的使用4.柔性数组的优势二.总结C/C++中程序内存区域划分前言:也许你从来没有听说过柔性数组这个概念,但是它确实是存在的。一.柔性数组1.柔性数组的定义C99中,结构体中的最后一个元素允许是未知大小的......
  • oop个人总结第二集(
    前言:在第一集总结过后,我对于后续迭代的题目进行了重新设计,在之前设计失败的第二三次题目中,总结经验,向同学老师请教,也很好,有效的在答题判题程序设计题目的最后一次迭代设计成功,通过了所有测试。后续发布了新的题目类型:家居强电电路模拟程序。*我总结之前的经验,吸取先前的教训,通......
  • 搜索算法总结
    概述搜索算法搜索算法大致可以分为以下几类:DFS深度优先搜索BFS广度优先搜索迭代加深搜索A*搜索IDA*启发式迭代加深搜索meetinthemiddle折半搜索双向DFS双向BFSDancingLinks舞蹈链DancingLinks算法是省选内容,在此不进行说明。剪枝技巧剪枝是搜索题常......
  • k8s容器网络ovs vxlan流向总结
    ovs流表刷在br-int网桥上。容器网卡eth0另一端在ovsbr-int网桥上。容器网关gw在br-int网桥上,ip地址是从pod网段中分配。br-int网桥上有vxlan类型ovs端口,用于封包和解包。同节点主机->容器路由判断->iptablesOUTPUT->iptablesPOSTROUTING->容器网关->容器网卡ping容器IP通......
  • 题目集4~6的总结
    目录一.前言 nchu-software-oop-2024-上-4~知识点 nchu-software-oop-2024-上-5~知识点 nchu-software-oop-2024-上-6~知识点二.设计与分析一.答题判题程序-41.继承2.多态二.家居强电电路模拟程序-11.类的设计2.抽象类二.家居强电电路模拟程序-21.面向对象设计原则——单一......