关于android 中采用 Intent 进行组件间通信的技术

在android中,个大组件之间主要是采用Intent进行通信的,再阅读官方文档的时候,看到一些句子,例如:

The system creates a new instance of the activity in the task from which it was started and routes the intent to it.

中文翻译:系统再Activity被启动的Task中创建一个Activity的新的实例并把Intent 对象路由进去(Route)。

以上句子是官方再介绍standard启动模式的时候写的,写的是一个Intent实例来启动一个启动模式为standard的Activity的时候系统会如何创建该Activity的实例。我注意到官方的用语: routes。这个很有意思,官方文档的意思是把一个Intent实例给路由到了新创建的Activity的实例中了,这个处理模型其实和典型的MVC web 框架对http请求的处理是一致的。典型的MVC 处理 http请求的模型如图:image

而android中使用Intent 进行组件间通信的时候处理模型如下:image

当然,上图中的Activity也可以是Service或BroadcastReceiver。使用的处理机制是一致的。这里的路由器(Router)的角色是由android系统担任的。Intent的角色相当于是http模型中的http请求。由以上两图可以看出,android组件间的通信机制在设计的时候是在一定程度上参考的http的通信模型的,只是android的组件间通信都是在本地进行,中间没有网络请求。

坚持原创技术分享,您的支持将鼓励我继续创作!