Android四大组件之一Activity介绍

一、Activity是什么:

        Activity翻译为活动,是Android app十分重要的一个组件,Activity的启动和组装方式是平台应用模型的基本部分,app的启动不同于平常编程范式伴随着main()方法,Android系统的初始化代码在Activity实例中唤醒特定的回调方法去响应Activity的特定生命周期阶段。

二、Activity之间的两种跳转方式:

  1. 隐式跳转,一般用于不同App之间。
  2. 显式跳转,用于一个App内。

三、Activity跳转传值的类型:

  1. String、int、boolean等一般数据类型
  2. 对象
  3. 集合

四、Activity的七个生命周期

  1. onCreate  在创建时调用
  2. onStart 在启动时调用
  3. onRestart 当用户按下HOME键后,再次返回到App时调用
  4. onResume 执行完onStart之后
  5. onPause 当Activity被覆盖时调用
  6. onStop 停止状态
  7. onDestory 销毁时调用

五、Activity的四种状态

  1. running->当前显示在屏幕的activity(位于任务栈的顶部),用户可见状态。
  2. poused->依旧在用户可见状态,但是界面焦点已经失去,此Activity无法与用户进行交互。
  3. stopped->用户看不到当前界面,也无法与用户进行交互 完全被覆盖.
  4. killed->当前界面被销毁,等待这系统被回收

六、Activity的四种启动模式

  • standard

介绍:这是 Activity 的默认启动模式,每次激活 Activity 的时候都会创建一个新的 Activity 实例,并放入任务栈中。

使用场景:基本绝大多数地方都可以用。

  • singleTop

介绍:这可能也是非常常用的 launchMode 了。如果在任务的栈顶正好存有该 Activity 的实例,则会通过调用       onNewIntent() 方法进行重用,否则就会同 standard 模式一样,创建新的实例并放入栈顶。即便栈中已经存在了该 Activity 的实例,也会创建新的实例,即:A -> B ->A,此时栈内为 A -> B -> A,但 A -> B ->B ,此时栈内为 A -> B。一句话概述就是:当且仅当启动的 Activity 和上一个 Activity 一致的时候才会通过调用 onNewIntent() 方法重用 Activity

使用场景:资讯阅读类 APP 的内容界面。

  • singleTask

这个 launchMode专门用于解决上面 singleTop 的另外一种情况,只要栈中已经存在了该 Activity 的实例,就会直接调用 onNewIntent() 方法来实现重用实例。重用时,直接让该 Activity 的实例回到栈顶,并且移除之前它上面的所有 Activity 实例。如果栈中不存在这样的实例,则和 standard 模式相同。即: A ->B -> C -> D -> B,此时栈内变成了 A -> B。而 A -> B -> C,栈内还是 A -> B -> C。

使用场景:浏览器的主页面,或者大部分 APP 的主页面。

  • singleInstance

在一个新栈中创建该 Activity 的实例,并让多个应用共享该栈中的该 Activity 实例。一旦该模式的 Activity 实例已经存在于某个栈中,任何应用再激活该 Activity 时都会重用该栈中的实例,是的,依然是调用 onNewIntent() 方法。其效果相当于多个应用共享一个应用,不管是谁激活,该 Activity 都会进入同一个应用中。但值得引起注意的是:singleInstance 不要用于中间页面,如果用户中间页面,跳转会出现很难受的问题。

使用场景:电话界面

七、Activity的四个重要属性

1. Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。默认为:DEFAULT。

2. Data:Data通常是URI格式定义的操作数据。例如:tel:// 。通过setData()方法设置。

   3. Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。

   4. Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。

猜你喜欢

转载自blog.csdn.net/menglong0329/article/details/87290286