《第一行代码Android》四大组件之Activity

终于来到了activity,作为平时看到最多的一个东西,里面有太多东西值得我探索了。

基本用法

新建一个Activity

1.在android studio中新建一个activity
2.在AndroidManiFest.xml文件中添加对应Activity
3.如果Activity是作为主Activity,则需要在AndroidManiFest.xml中配置

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

Activity之间跳转

打开另外一个Activity

普通方式
        val intent = Intent(this, MainTestActivity::class.java)
        startActivity(intent)
向下一个Activity传递数据
        val intent = Intent(this, MainTestActivity::class.java)
        intent.putExtra("data", 1)
        startActivity(intent)
返回数据给上一个Activity

在启动的Activity调用startActivityForResult,requestCode保证是一个唯一值。
[在新版android studio中发现已经标为了废弃,谷歌推荐使用registerForActivityResult]

        val intent = Intent(this, MainTestActivity::class.java)
        val requestCode = 100
        startActivityForResult(intent, requestCode)

在被启动的Activity中

        val intent = Intent()
        intent.putExtra("data", "hello")
        setResult(RESULT_OK, intent)
        finish()

在上一个Activity中

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        when (resultCode) {
            mRequestCode -> if (resultCode == RESULT_OK) {
                val returnData = data?.getStringExtra("data")
            }
        }
    }
使用隐式Intent

所谓隐式就是表示不明确指出启动哪一个Activity,而是指出了action和cateagory信息。然后交由系统分析这个Intent,并找到合适的Activity去启动
在AndroidManiFest.xml 中Activity中加入

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

启动Activity

        val intent = Intent("com.example.activity.ANION_START")
        startActivity(intent)

当然也可以自己定义,然后调用intent.addCategory()来实现

<category android:name="android.intent.category.MY_CATEGORY" />

生命周期

onCreate

创建activity的时候调用

onStart

由不可见变为可见的时候调用

onResume

准备好和用户交互的时候调用

onPause

准备启动另外一个应用activitiy的时候调用

onStop

变为完全不可见的时候调用

onDestory

销毁的时候调用。一般是调用finish()之后会调用

onRestart

重新启动的时候会被调用

启动模式

standard

如果没有特别指定,默认的启动方式就是standard

singleTop

在启动Activity时,如果发现当前栈顶已经是该Activity,则认为可以直接使用它,不再创建新的Activity。

android:launchMode="singleTop"

singleTask

每次在启动Activity时,会先检测当前返回栈中是否存在该Activity,如果存在,则直接使用,并将此Activity之上的Activity全部出栈。如果没有发现,新建一个

android:launchMode="singleTask"

singleInstance

指定为singleInstance的Activity会创建一个单独的返回栈来管理Activity。这么做的意义是为了如果多个应用打开一个同Activity,不同的应用会有不同的返回栈。相当于创建了两个Activity

android:launchMode="singleInstance"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是李校长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值