Android 四大组件之Activity的知识整理

Android 四大组件之Activity的知识整理



前言

本文主要讲Activity的四大方面:
1.基本用法
2.Activity生命跳转
3.生命周期
4.启动模式


一、Activity的基本用法,或者说Activity是干什么的?

        我自己的理解就是,一个Activity就是一个界面,用来放各种控件的。和用户之间进行交互。用书本上的化是Activity是一种可以包含用户界面的组件,主要是用于和用户进行交互。一个应用程序中可以包含零个或多个Activity,但其实应用程序中不会出现零个Activity。

        创建一个Activity也很简单,如果没有创建一个项目就是File–>New–>New Project–>Empty Activity–Next进入项目配置界面。
        当有一个项目时就是在想要在哪个文件夹下创建就点击鼠标右键,然后点击New–>Activity–>Empty Activity–Next进入项目配置界面

        但创建之后就可以在上面进行需要的操作了

二、Activity生命跳转

生命跳转是什么

        应用程序肯定不会就只有一个界面,所以需要界面之间进行跳转,并且有的界面跳转之后不需要再启动了,所以要销毁这个Activity,这个就要看下面讲的那个Activity生命周期了,我们这部分先不说,我们先看界面的跳转。界面跳转有很多方法,我们主要来讲Intent再Activity之间穿梭。

Intent分:显式Intent和隐式Intent

显示Intent

        显示Intent比较简单,比如说现在有两个Activity,一个叫FirstActivity,另一个叫
SecondActivity。

        Intent有多个函数的重载,其中一个是Intent(Context packageContext,Class<?>cls)。这两个参数是什么意思呢?第一个Contxt packageContext最简单的理解就是当前的这个Activity,那第二个Class<?>cls当然就是我们需要启动的那个Activity。

代码具体如下:
Java:

// Switch interface
Intent intent = Intent(FirstActivity.this,SecondActivity.class);
//启动目标Activity
startActivity(intent)

Kontlin

// Switch interface
val intent = Intent(this,SecondActivity::class.java);
//启动目标Activity
startActivity(intent)

这种Intent的“意图”非常的明显,因此就叫显示Intent

隐式Intent

        隐式Intetn是通过抽象的action和cateoty等信息,然后由系统去分析这个Intent,并找到合适的Activity去启动。
        有的人可能就会由疑问了action是什么,cateoty又是什么。再这个时候我们就要打开我们的Android项目区自己看一下,打开项目中的AndroidManifest.xml,在我们的文件理是不是有一下这四行代码:

		<intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        这四行代码是干嘛的呢?其实啊这四行代码主要的作用是我们点击app图标之后第一个打开的Activity是哪个。

        看到这很多人其实应该还是很迷糊的,我知道这个有什么用呢?我还是不知道我怎么去用隐式Intent啊。别急我们接着往下看

        我们再第二个Activity配置中加入四行代码:

	<activity android:name=".SecondActivity"
			<intent-filter>
                <action android:name="com.example.activity.ACTTON_START" />
                <category android:name="android.intent.categor.DEFAULT" />
            </intent-filter>
    </activity>

        这不是六行嘛?您仔细看看第一行和最后一行是系统自动生成的。这个是干嘛用的呢,我们来理解一下:
        action android:name="com.example.activitytest.ACTION_START"这句代码是用来我们进行界面交互的时候调用的参数。
        category android:name="android.intent.categor.DEFAULT这行代码主要是设置这个activity对于默认的action是否是一个可选的

说了这么多到底隐式Intent应该这么写呢
代码如下:

Java

// Switch interface
Intent intent = Intent("com.example.activitytest,ACTION_START")
//启动目标Activity
startActivity(intent)

Kontlin

// Switch interface
val intent = Intent("com.example.activitytest,ACTION_START");
//启动目标Activity
startActivity(intent)

这里有一个点要记住每个Intent中只能指定一个action,但能指定多个category

关于Intent的内容先讲到这,当然这肯定是没有说完的,我会专门写一篇关于Intent文章来说明这个。


三、生命周期

生命周期是什么

        我们在这简单的说明一下生命周期是什么,具体的我们之后和fragment的生命周期一起说。
我们拿一张表来说明什么是生命周期。
图片来源网络
                                                                     图片来源网络

从上面的图我们可以看出Activity总共有七个生命周期,分别是:
         onCreate():在Activity创建的时候调用。
         onStrat():在Activity由不可见变为可见的时候调用。
         onResume():在Activity准备好和用户进行交互的时候调用。
         onPause():当前Activity被其他Activity覆盖其上或被锁屏。
         onStop():当前Activity已经不可见了,但是还是存在与内存里的。
         onDestroy():当前Activity被销毁了,不可见。
         onRestart():当前Activity重新开始,Activity在这时可见。

四、Activity启动模式

        这部分我们浅谈Activity的四种启动模式,看看他们分别有什么区别。再次之前我们先来学习一下什么叫做任务栈。

任务栈(Task Stack)

        任务栈任务栈,说明这个是一个存放任务的地方,任务怎么产生呢,当然是Activity和用户交互所产生任务啦,所以在这个任务栈存放的就是那些Activity。用户每启动一个Activity就把这个Activity放于栈顶,其他的Activity调用stop()

standard

        standard是默认的启动模式,不需要写任何的配置,在这个模式下,启动一个Activity就是启动一个Activity,也就是说可能会启动多个相同的实列,也允许多个Activity叠加,这些Activity都放在一个任务栈里。

singleTop

        这个模式可以有多个实例,但不允许有多个Activity叠加。

singleTask

        这个模式和singleTop其实是差不多的,只是区别在与singleTop模式是只是针对栈顶的元素,而singleTask模式下,如果task栈内存在目标Activity实例则:1.在这个栈内位于这个Activity实例之上的所有Activity弹出栈,只留下这个Activity和这个Activity下面的Activity.

singleInstance

        这个是全局唯一模式,从这个中文我们就可以知道这是一个很很搞事情的一个模式,这个模式具体什么意思呢,其实也很好理解,就是我们每启动一个Activity就可以新建一个Task,所以 一个Task有且只有一个Activity如果我们要调用以前创建过的Activity,他不会创建一个新的Task,而是把之前的Activity给重新的唤醒

总结

        以上就是今天要讲的内容,本文仅仅简单介绍了Activity是干嘛用的,生命跳转,生命周期和启动模式,当然这一篇肯定是讲不玩的,这里主要是对粗略的讲一下,之后我们会去详细的讲解这些知识点。,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值