我是靠谱客的博主 香蕉煎蛋,最近开发中收集的这篇文章主要介绍Intent进行组件通信的一些体会Intent进行组件通信的原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Intent进行组件通信的原理

l  Intent协助应用间的交互与通讯

Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述、Android则根据此Intent的描述,负责找到对应的组建,将Intent传递给调用的组建,并完成组建的调用

l  Intent可以激活Android应用的三种类型的核心组建:Activity、Service、BroadcastReceiver

l  可划分为:显示Intent【目标唯一】和隐士Intent【根据目标intentfilter进行筛选】

Intent的使用:

  1. 显示Intent

²  启动Activity:[显示]

Intent intent=new Intent(this,NewsDetailActivity.class);

super.startActivity(intent);

等价于

ComponentName comp=new ComponentName(this,NewsDetailActivity.class);

Intent intent=new Intent();

intent.setComponent(comp);

super.startActivity(intent);

  1. 隐士Intent

l  在不明确设置激活对象的前提下寻找最匹配的组件

l  Android系统会根据隐士Intent的动作(Action)、类别(Category)、数据(URI和数据类型)找到最合适的组件来处理这个意图

l  Intent解析戒指通过查找AndroidMainfest.xml中的IntentFilter,最终找到匹配的Intentde action、type、category这三个属性来进行判断的

Intent-filter

Action:可以有多个,程序中只要有一个匹配就行【必有】

Category:必须至少有一个类别,用startActivity启动【必有】

l  Data:路径匹配【协议scheme://主机名:端口号/路径】、数据类型匹配mimeType。

²  启动Activity:[隐式]

(1)在java代码中设置隐士对象

Intent intent=new Intent();

intent.setAction("show_details");//intent.ACTION_VIEW

intent.addCategory("detail");

//     intent.setData(Uri.parse("http://www.jereh.com"));

//     intent.setType("image/*");

super.startActivity(intent);

(2)AndroidMainfest.xml 相应的<activity>中进行配置

<intent-filter >

<action android:name="show_details"/>

<action android:name="android.intent.action.VIEW"/>

<!-- 隐士Intent必须保留 DEFAULT-->

<category android:name="android.intent.category.DEFAULT"/>

<category android:name="detail"/>

<!-- <data android:mimeType="image/*"/>

<data android:scheme="http"  android:host="www.jereh.com"/> -->

</intent-filter>

注意:在配置隐式intent的fitler时,必须包含默认的DEFAULT category属性

<category android:name="android.intent.category.DEFAULT"/>

         一旦设置了data属性,基本上也就确定了一个Activity。

 

 

显示启动与隐式启动的区别:

  1. 显示Intent直接指定下一个要跳转到的应用的对象名称。通过Intent.setClass()或intent.setComponent()来指定目标。
  • 优点:不需要进行寻址过滤,使用简单、速度快、定位准确、不受干扰。
  • 缺点:只能在一个工程内部的应用间进行跳转,扩展性不强,系统间耦合紧。显示设置了class会自动屏蔽Implicit形式的intent
  1. 2.    隐士intent
  • 优点:需要指明需要启动哪一个Activity,而由Android系统来决定,有利于使用第三方组件。
  • 隐式启动Activity时,Android系统在应用程序运行时解析Intent,并根据一定的规则对Intent和Activity进行匹配,是Intent上的动作、数据与Activity完全吻合。

匹配的Activity可以是应用程序本身的,也可以是Android系统内置的,还可以是第三方应用程序提供的。这种方式更加强调了Android应用程序中组建的可复用性。

  • 缺点:启动慢。

转载于:https://www.cnblogs.com/lcs1991/p/4605096.html

最后

以上就是香蕉煎蛋为你收集整理的Intent进行组件通信的一些体会Intent进行组件通信的原理的全部内容,希望文章能够帮你解决Intent进行组件通信的一些体会Intent进行组件通信的原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部