Android-基础-activity

一、启动模式

1.1 standard

默认模式。

1.2 singleTop

任务栈中没有该activity:创建activity;
任务栈中有该activity但不在栈顶:创建activity;
任务栈中有该activity并且在栈顶:不重新创建activity,只响应该activity的onNewIntent方法。

1.3 singleTask

任务栈中没有该activity:创建activity并压到栈顶;
任务栈中有该activity:销毁该activity上面所有activity,使该activity位于栈顶,并响应onNewIntent方法。

1.4 singleInstance

最为特殊的一个模式:设置了该模式启动的Acitivyt会在一个独立的任务栈中开启,同事该任务栈有且只有一个这样的Activity实例,每次再启动这个Activity的时候就会在该任务栈里重用该Activity同时响应onNewIntent方法。

1.5 singleInstace与singleTask的区别

singleTask启动的Activity在系统层面上来说是可以有多个实例的。比如说应用程序A想调用singleTask模式下的ActivityA,而应用程序B也同样调用了,那么在应用程序A和B中就会各有一个ActivityA的实例。
但如果该ActivityA是singleInstance模式的话,那么无论有多少个应用程序调用它,它都只可能在系统中存在一个实例同时该实例还是位于它自己的一个单独的任务栈中。

1.6 通过Intent中setFlags来指定启动模式

  • Intent.FLAG_ACTIVITY_NEW_TASK
    使用一个新的任务栈来启动一个Activity,该flag通常用于在Service中启动Activity的场景,因为Service中并不存在有Activity任务栈所以通常通过这种方式来新启动一个Activity任务栈并创建新的Activity实例。
  • Intent.FLAG_ACTIVITY_SINGLE_TOP
    与在manifest文件里的launchmode指定”singleTop”作用一样
  • Intent.FLAG_ACTIVITY_CLEAR_TOP
    与在manifest文件里的launchmode指定”singleTask”作用一样
  • Intent.FLAG_ACTIVITY_NO_HISTORY
    设置了该Flags的Activity在启动其他Activity后该Activity就消失了,不会保留在Activity栈中,此Activity可以作为一个中转Activity来负责启动其他的Activity。

二、生命周期

这里写图片描述

2.1 onCreate

Activity第一次创建的时候调用。主要做初始化操作:创建view、绑定数据到view。

2.2 onStart

此时Activity已经显示,但是还无法和用户交互

2.3 onResume

Activity此时已经可以与用户开始进行交互,Activity已经位于Activity栈的栈顶。

2.4 onPause

该方法由于调用过程过快而不宜做耗时操作,建议做一些数据的存储和动画的停止操作。此时activity依然可见

2.5 onStop

activity已经不可见。同样这里可做一些数据的存储操作

2.6 onRestart

activity重新回到前台

2.7 onDestroy

Activity方法将会被销毁,此时我们可以做一些回收和销毁的操作。

2.8 onSavedInstanceState+onRestoreInstanceState

这两个方法配套使用,用来做activity异常销毁时的数据存储和恢复。
常见使用场景:横竖屏切换,内存不足activity被回收后再次创建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值