《Android编程权威指南》关于activity的总结

来源:互联网 发布:剑雨江湖进阶数据坐骑 编辑:程序博客网 时间:2024/05/18 01:41

《Android编程权威指南》总结系列文章是自己阅读完这本书之后的一个总结。主要是检出一些比较重要的、对自己来说不太熟悉的知识总结出来,以便在之后的工作中及时查阅。文章的编写可能并非完整,因为一些基本的东西在自己熟悉的情况下不必再写出来,所以有的时候看上去可能会前后接不上,本系列文章仅做自己工作类文章使用。


1.1   启动activity分析

一个activity启动另外一个activity最简单的方式就是使用startActivity(intent)

我们可能会以为startActivity(intent)方法是一个类方法,启动activity就是针对Activity子类调用该方法。实际并非如此。activity调用startActivity(…)方法时,调用请求实际发给了操作系统。

准确的说,该方法调用请求是发送给操作系统的ActivityManagerActivityManager负责创建Activity实例并调用其onCreate(…)方法。activity的启动示意图如下:


同一应用里的两个activity之间,通信却要借助于应用外部的ActivityManager,这可能看起来有点奇怪。不过这种模式会使不同应用间的activity交互变得容易得多。

一个应用的activity如需启动另一个应用的activity,可通过创建隐士intent来处理。

 

1.2   基于intent的通信

intent对象是component用来与操作系统通信的一种媒介工具。Component具体有:activity、service、broadcast receiver以及content provider。

Intent是一种多功能通信工具。Intent类提供了多个构造方法,以满足不同的使用需求。


在启动activity之前,ActivityManager会检查确认指定的Class是否在配置文件中声明。如已完成声明,则启动activity,应用正常运行。反之,则抛出ActivityNotFoundException异常。这就是我们必须在manifest配置文件中声明应用全部activity的原因所在。

 

1.3   activity的使用与管理

我们在各个activity间往返的时候,操作系统底层到底发生了什么?首先,在桌面启动器中点击某个应用时,操作系统并没有启动应用,而只是启动了应用中的一个activity。确切地说,它启动了应用的launcher activity。

ActivityManager维护者一个非特定应用独享的回退栈。所有应用的activity都共享该回退栈。这也是将ActivityManager设计成操作系统级的activity管理器来负责启动应用activity的原因之一。不局限于单个应用,回退栈作为一个整体共享给操作系统及设备使用。

0 0
原创粉丝点击