Activity四大启动方式生命周期

Standard 标准模式启动

android:launchMode=“standard”

归纳:直接在栈顶新建一个Activity进行启动

生命周期:

===>开启一个Activity

I/LifecycleActivity_A: onCreate:
I/LifecycleActivity_A: onStart:
I/LifecycleActivity_A: onResume:

===>退出

I/LifecycleActivity_A: onPause:
I/LifecycleActivity_A: onStop:
I/LifecycleActivity_A: onDestroy:

SingleTop 栈顶启动

manifest:android:launchMode=“singleTop”
FLAG:FLAG_ACTIVITY_SINGLE_TOP

归纳:当启动的Activity在栈顶时,则进行复用,如果栈顶没有时使用默认的Standard模式

生命周期:

===> 启动A:

A: onCreate:
A: onStart:
A: onResume:

===> 栈顶启动:

A: onPause:
A: onNewIntent:
A: onResume:

FLAG_ACTIVITY_CLEAR_TOP启动

栈顶复用不走newIntent(), 将栈内的需要启动的activity移到最顶处启动,并将上面的activity全部出栈销毁。

===> 启动A FLAG_ACTIVITY_NEW_TASK

I/LifecycleActivity_A: onCreate:
I/LifecycleActivity_A: onStart:
I/LifecycleActivity_A: onResume:
I/LifecycleActivity_A: onPause:

===> 启动B FLAG_ACTIVITY_NEW_TASK

I/LifecycleActivity_A: onPause:
I/LifecycleActivity_B: onCreate:
I/LifecycleActivity_B: onStart:
I/LifecycleActivity_B: onResume:
I/LifecycleActivity_A: onStop:

===> 启动A FLAG_ACTIVITY_CLEAR_TOP

I/LifecycleActivity_B: onPause:
I/LifecycleActivity_A: onDestroy:
I/LifecycleActivity_A: onCreate:
I/LifecycleActivity_A: onStart:
I/LifecycleActivity_A: onResume:
I/LifecycleActivity_B: onStop:
I/LifecycleActivity_B: onDestroy:

===>A退出

I/LifecycleActivity_A: onPause:
I/LifecycleActivity_A: onStop:
I/LifecycleActivity_A: onDestroy:


SingleTask 栈内复用模式

android:launchMode=“singleTask”

归纳:当栈内有需要启动的Activity时,则将该Activity移动到栈顶,并在栈中这个activity顶部的activity全部出栈销毁。

生命周期:

===> 启动A:

A: onCreate:
A: onStart:
A: onResume:

===> 启动B:

A: onPause:
B: onCreate:
B: onStart:
B: onResume:
A: onStop:

===> 栈内启动A:

B: onPause:
A: onNewIntent:
A: onRestart:
A: onStart:
A: onResume:
B: onStop:
B: onDestroy:

FLAG_ACTIVITY_REORDER_TO_FRONT启动

===>启动A FLAG_ACTIVITY_NEW_TASK

I/LifecycleActivity_A: onCreate:
I/LifecycleActivity_A: onStart:
I/LifecycleActivity_A: onResume:

===> 启动B FLAG_ACTIVITY_NEW_TASK

I/LifecycleActivity_A: onPause:
I/LifecycleActivity_B: onCreate:
I/LifecycleActivity_B: onStart:
I/LifecycleActivity_B: onResume:
I/LifecycleActivity_A: onStop:

===> 启动A FLAG_ACTIVITY_REORDER_TO_FRONT

I/LifecycleActivity_B: onPause:
I/LifecycleActivity_A: onNewIntent:
I/LifecycleActivity_A: onRestart:
I/LifecycleActivity_A: onStart:
I/LifecycleActivity_A: onResume:
I/LifecycleActivity_B: onStop:

===>A退出

I/LifecycleActivity_A: onPause:
I/LifecycleActivity_B: onRestart:
I/LifecycleActivity_B: onStart:
I/LifecycleActivity_B: onResume:
I/LifecycleActivity_A: onStop:
I/LifecycleActivity_A: onDestroy:

===>B退出

I/LifecycleActivity_B: onPause:
I/LifecycleActivity_B: onStop:
I/LifecycleActivity_B: onDestroy:

SingleInstance 单例启动模式

android:launchMode=“singleinstance”

归纳:单独创建一个栈控件启动这个Activity,常用于启动壁纸,电话,闹钟等界面实现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值