超全的Activity知识

1.概述

2.作用

3.生命周期

4.启动模式

5.启动方式

6.状态保存

7.与Fragment交互

8.总结

 

1.概述

首先我们要知道什么是Activity,就是属于Android四大组件之一:Activity、Service、BroadcastReceiver、ContentProvider。简单来说Activity其实就是一个屏幕的显示页面,但是实际上又并非那么简单:Activity代表一个窗口,而这个窗口是由其成员变量mWindow来表示,mWindow本质上是一个PhoneWindow对象,PhoneWindow继承Window抽象类,负责窗口的管理。而呈现的界面由PhoneWindow管理的DecorView对象来完成,看源码发现:DecorView是继承FrameLayout,并写着注释:This is the top-level view of the window, containing the window decor.这是窗口的顶视图,也就是整个view树的“根”。下面简单用图描述一下:

1.Activity类似一个框架,通过Window来管理,负责容器的生命周期和活动。

2.Window负责窗口的管理,窗口的绘制和渲染交给DecorView来完成。

3.DecorView是View树的根,我们平时在写布局文件layout.xml就是Contentparent的子试图。

4.layout.xml就是开发者平时定义的布局文件,最终inflate为DecorView的子组件。

 

2.作用

1.代表一个活动,表示要进行(展示)什么活动。

2.Activity最直接的作用就是显示界面,与用户交互。

3.控制,可以选择要显示的view,也可以从View获取数据把数据传给业务逻辑层进行处理。

 

3.生命周期

下面这张图我相信很多开发者都已经看过不少次:

下面通过一张表来说明一下:

注意:

1.当Activity第一次启动,执行的生命周期方法如下:onCreate->onStart->onResume。

2.当用户打开新的Activity或者切换到桌面的时候,回调的生命周期如下:onPause->onStop。

3.当用户再次回到原Activity时,回调如下:onRestart->onStart->onResume。

4.当用户按back键回退时,回调如下:onPause->onStop->onDestroy。

5.当Activity被系统回收后再次打开,onCreate->onStart->onResume。

常见场景的生命周期调用方式

4.启动模式

1.standard:标准模式,这是系统的默认模式。每次启动一个Activity都会重新创建一个新的实例。

2.singleTop:栈顶复用模式,这种模式下,新Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,同时它的onNewIntent方法会回调。

3.singleTask:栈内复用模式,这是一种单实例模式,这模式下只要Activity在一个栈内中存在,那么多次启动此Activity都不会重新创建实例,但是会回调其onNewIntent。

4.singleInstance:单实例模式,具有singleTask模式的所有特性,另外具有此模式的Activity只能单独地位于一个任务栈中。

四种模式的区别:

5.启动方式

1.显式启动

2.隐式启动

匹配规则如下:

6.状态保存

情况一:资源相关的系统配置发生改变导致Activity被杀死并重新创建

情况二:资源内存不足导致低优先级的Activity被杀死

解决方案:

通过onSaveInstanceState来保存当前的Activity状态,保存临时数据。

具体说明:

7.与Fragment交互

1.Activity如何传递数据到Fragment

主要用了bundle方式,例子如下:

MainActivity

 

Activity布局:

fragment文件

fragment布局文件

2.Fragment如何传递数据到Activity

方式:

1.接口回调 

2.广播

3.EventBus

这里主要实现接口回调例子:

先定义一个接口

fragment_new布局文件:

NewFragment布局文件

MainActivity布局文件

MainActivity文件实现:

步骤就是:

1.定义一个接口

2.实现了该接口的类所创建的对象的引用赋给该接口声明的变量

3.通过该接口变量调用该实现类对象的实现的接口方法

8.总结

温故而知新。

请关注公众号,里面有更多的精彩。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值