Activity详解(生命周期、任务栈、启动模式、跳转协议、intent跳转)

目录

1、Activity生命周期:

1.1、Activity的4种状态

1.2、Activity生命周期分析

1.3、Android进程优先级

2、Android任务栈

3、Activity启动模式

standard:标准模式、默认模式   [ˈstændərd] 

singleTop:栈顶复用模式

singleTask:栈内复用模式

singleInstance:单实例模式

4、scheme跳转协议

5、显示意图和隐式意图的区别:


Activity是Android最核心的组件,我们在Activity的XML文件中搭建界面,展示给用户,同时与用户进行交互。

相关文章:面试题一:组件之Activity系列

1、Activity生命周期:

1.1、Activity的4种状态

  • Running:一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
  • Paused:当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,它仍然可见,但它已经失去了焦点,故不可与用户交互。
  • Stopped:当Activity不可见时,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。
  • Killed:Activity被杀掉以后或者被启动以前,处于Killed状态。这是Activity已从Activity堆栈中移除,需要重新启动才可以显示和使用。

4种状态中,Running状态和Paused状态是可见的,Stopped状态和Killed状态时不可见的。

针对以上的paused状态,做了测试,发现:

当Activity被另一个Dialog样式的Activity覆盖时,会调用onPause方法,点击返回键,调用onResume方法。

当Activity上显示一个dialog时,不调用任何生命周期方法。

1.2、Activity生命周期分析

结合四个场景分析:

 Activity启动 -> onCreate() -> onStart() -> onResume()

点击Home键回到主界面(Activity不可见)-> onPause() -> onStop()

当我们再次回到原Activity时 -> onRestart() -> onStart() -> onResume()

退出当前Activity时 -> onPause() -> onStop() -> onDestroy()

1.3、Android进程优先级

前台 / 可见 / 服务 / 后台 / 空

2、Android任务栈

3、Activity启动模式

Activity四种启动模式

standard:标准模式、默认模式   [ˈstændərd] 

  •  含义:每次启动一个Activity就会创建一个新的实例。
  •  注意:使用ApplicationContext去启动standard模式Activity就会报错。因为standard模式的Activity会默认进入启动它所属的任务栈,但是由于非Activity的Context没有所谓的任务栈。

singleTop:栈顶复用模式

  •  含义:如果新Activity已经位于任务栈的栈顶,就不会重新创建,并回调onNewIntent(intent)方法。
  • 应用场景一:可以解决重复打开activity的问题,例如 点击注册按钮(500毫秒你点击了两次) , 如果你用系统默认的启动模式, 就会打开2个注册页面,singTop启动模式的意思是开启actiivty的时候系统会先判断此activity是否存在栈顶, 如果存在就激活此实例 因此就可以解决上述的问题。
  • 应用场景二:在浏览器的书签 特点:检查栈顶是否存在这个实例 如果存在则不重新创建

singleTask:栈内复用模式

  •  含义:只要该Activity在一个任务栈中存在,都不会重新创建,并回调onNewIntent(intent)方法。如果不存在,系统会先寻找是否存在需要的栈,如果不存在该栈,就创建一个任务栈,并把该Activity放进去;如果存在,就会创建到已经存在的栈中。
  • 应用场景:浏览器主页面   特点:该实例在任务栈只能存在一个,如果再启动,则把上面的Activity实例全部清除。A --> B --> C -->D在D点击返回键,就返回到A。

singleInstance:单实例模式

应用场景:系统电话拨号界面

拨打电话作为手机最为重要的功能之一,任何界面都可以调用,虽然会消耗系统资源,但是确实值得的。

4、scheme跳转协议

android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方面地跳转APP中的各个页面;通过scheme协议,服务器可以定制化告诉APP跳转哪个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等。

操作方法其实很简单:客户端只要向H5界面注册一个url scheme,然后由scheme协议通过浏览器启动这个activity。

scheme协议的应用场景大概有三种:

1、服务端下发一个url路径,然后客户端根据这个url跳转到相应的界面;

2、从H5界面跳转到相应的APP的activity;

3、APP根据url跳转到另一个APP的activity;这种场景在大型公司用的较多,一般由一个热门APP跳转到其他APP,用作推广使用。

  •  含义: 具有此模式的Activity只能单独位于一个任务栈中,且此任务栈中只有唯一一个实例。
  • 应用场景:来电显示界面 特点:该实例Activity会创建一个单独的任务栈,且与用户正在交互的界面的任务栈在    前端,直到全部Activity退出.

5、显示意图和隐式意图的区别:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值