【Android】Activity的生命周期,跳转以及数据传递

         Activity的生命周期是指Activity从创建到销毁的整个过程,这个过程大致可以分为五种状态,分别是:启动状态,运行状态,暂停状态,停止状态和销毁状态。

  • 启动状态:时间很短,一般启动之后就会进入运行状态
  • 运行状态:此时的activity位于界面的最前端,是可见的,是可以和用户进行交互的
  • 暂停状态:在某些情况下,activity对于用户来说仍然是可见的,但是他无法获取焦点,用户对他操作没有响应。比如,当前的activity上面覆盖了一个非全屏的界面的时候,被覆盖的activity就处于暂停状态
  • 停止状态:当activity完全不可见时,就处于停止状态,此时很容易被系统销毁
  • 销毁状态:在这个状态时,activity将会被清理出内存

生命周期方法

由图上可以看出一个Activity的生命周期方法有七个,分别是:

  • onCreate()
  • onStart()
  • onResume()
  • onPause()
  • onStop()
  • onDestroy()
  • onRestart()

了解这些生命周期,可以帮助我们完成一些初始化,或者保存数据之类的操作,也可以向控制台打印一些日志,方便我们进行调试

下面简要介绍一下每一个方法都是在什么时候被调用的,他们的作用是什么:

  • onCreate()
    • create是创建的意思,他是一个activity生命周期经历的第一个方法
    • 作用:用于activity一些初始化工作,比如加载布局
    • 此时的activity是处于不可见的状态,所以一些加载初始化代码不应该被放到这个里面
  • onStart()
    • start是开始的意思
    • 此时的activity处于即将可以看见的状态
  • onResume()
    • resume是继续,重新开始的意思
    • 经历了前两个方法后,此时的activity已经具备了展现给用户的能力
    • 在这个阶段,activity就已经在前台显示了,可以和用户进行交互了
  • onPause()
    • pause是暂停的意思,在当前activity被其他的activity覆盖或者屏幕锁屏时调用
    • 此时的activity还是可以被用户看见的,我们可以在这个方法中去做一些轻量级的存储数据的操作
  • onStop()
    • stop是停止的意思
    • 此时的activity已经不可见了,但是activity的对象还存在在内存当中,并没有被销毁
  • onDestroy()
    • destroy是销毁,消灭的意思
    • 在activity被销毁的时候调用,在这个方法中,我们可以将一些没有释放的资源释放,以及进行一些回收工作
  • onRestart()
    • restart是从新开始的意思
    • 是activity从停止状态到再次启动的时候调用

注意:当两个activity进行切换的时候,要知道调用的顺序

(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop

 

Activity之间的跳转和数据传递

首先需要介绍一个类:Intent

Intent

  • intent是意图的意思,是程序中各组件进行交互的一种重要方式,他不仅可以指定当前组件要执行的动作,还可以在不同的组件之间互相传递数据。
  • 显示Intent
    • 显示Intent是指直接指定目标组件,比如activity跳转使用显示Intent代码为
Intent intent = new Intent(this,BActivity.class);

startActivity(intent);
  • 创建Intent对象是传入的两个参数分别为“当前的activity”,跳转目标activity类的字节码
  • 隐式Intent
    • 隐式Intent的动作不会出现在java代码当中,而是存在于manifest文件中
    • Android系统会使用IntentFilter来匹配响应的组件,匹配的属性主要有:
      • action:表示要完成的动作
      • data:表示要传输的数据
      • category:表示为action添加的额外信息
    • 举例,隐式Intent实现activity跳转
    •   <activity android:name=".BActivity">
      
             <intent-filter>
      
                 <action android:name="cn.jp.START_ACTIVITY" />
      
                 <category android:name="android.intent.category.DEFAULT" />
      
             </intent-filter>
      
       </activity>

在程序中添加

Intent intent = new Intent();

intent.setAction("cn.jp.START_ACTIVITY");

startActivity(intent);

传递数据

两种方法

  • 使用Intent的putExtra()方法传递数据
    • putExtra()有两个形参,分别为name和value
    • 接收这些参数可以使用Intent的getXxxExtra(String name)
  • 使用Bundle类传递数据
    • 可以理解为打包进行传递
    • Bundle类和Map比较类似,是用键值对的形式存储数据
    • 使用:
      • Bundle bundle = new Bundle();
      • bundle.putString("key","value");
      • intent.putExtras(bundle);
    • 获取:
      • Bundle bundle = getIntent().getExtras();
      • bundle.getString("key");

 

数据回传

包含了三个方法

  • startActivityForResult(Intent intent,int requestCode)
    • 用于开启一个Activity,并希望在销毁的时候,能够从中返回数据
    • 第一个参数intent表示意图,不用介绍
    • 第二个参数表示请求码,用于表示请求来源。举个例子,如果一个界面的两个button都可以跳转到同一个activity那么使用请求码,就可以知道是从哪个按钮跳转过去的
  • setResult(int resultCode,Intent intent)
    • 用于携带数据进行回传
    • 第一个参数表示返回码,用于标识返回的数据来自哪个activity
    • 第二个参数表示用于携带数据
    • 值得注意的是setResult只能用来回传数据,并不能跳转到上一个页面,所以我们需要调用finish()方法来关闭当前activity
  • onActivityResult(int requestCode, int resultCode, Intent data)
    • 用于接收回传数据,并根据requestCode和resultCode来识别数据的来源
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 四大组件分别是活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供器(ContentProvider)。 活动(Activity)是Android应用的核心组件,它代表用户界面的一个单独屏幕。每个活动都有自己的生命周期。活动的生命周期包括以下几个方法:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()。当活动被创建时,首先调用onCreate()方法,然后调用onStart()和onResume()方法,活动进入可见状态。当活动被其他活动覆盖或者用户按下返回键时,会调用onPause()方法,然后调用onStop()方法,活动进入不可见状态。当用户再次返回到该活动时,会调用onRestart()、onStart()和onResume()方法,恢复活动的可见状态。最后,当活动被销毁时,会调用onPause()、onStop()和onDestroy()方法。 服务(Service)是一种在后台运行的组件,它可以执行长时间运行的任务,即使用户切换到其他应用程序。服务的生命周期包括onCreate()、onStartCommand()、onBind()和onDestroy()方法。当服务被创建时,会调用onCreate()方法。然后,通过调用onStartCommand()方法来启动服务并执行后台任务。如果其他组件想要与服务进行交互,可以调用onBind()方法来绑定服务。最后,当服务不再需要时,会调用onDestroy()方法来销毁服务。 广播接收器(BroadcastReceiver)是一种响应系统广播消息的组件。它可以在应用程序之间传递消息,或者通过系统消息通知应用程序发生的事件。广播接收器的生命周期只包括onReceive()方法,当接收到广播消息时,会调用这个方法来处理接收到的消息。 内容提供器(ContentProvider)是一种管理应用程序之间共享数据的组件。它允许应用程序共享数据,并提供对数据的访问和修改。内容提供器的生命周期包括onCreate()、query()、insert()、update()和delete()等方法。当内容提供器被创建时,会调用onCreate()方法。然后,通过调用query()、insert()、update()和delete()方法来执行对数据的操作。最后,当内容提供器不再需要时,会调用onDestroy()方法来销毁内容提供器。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值