`

android 如何接收和发送intent

 
阅读更多
1. Intents被分成两个主要目录
● Activity Action Intents(活动动作意图)Intents用来呼叫应用程序以外的活动。只有一个活动可以处理Intent。例如,对于网页浏览器,你需要打开网页浏览器活动来显示一个页面。

● Broadcast Intents (广播意图)Intents 被送出到多个活动来处理。一个被Android发出的广播意图的例子就是,当前电池的电量。任何活动处理这个意图并适时的反应。——例如,如果电池电量低到一定程度,取消一个活动。

2.android程序生命周期

● onCreate
● onStart
● Process-specific events (for example: launching activities or accessing a database)
● onStop
● onDestroy

3.通用的活动动作意图



(图略)


4.通用的广播意图


  (图略)

5.android传值方法总结

当一个application 中有多个 Activity的时候,那么每个Activity之前的传值就是一个问题了。所以这里介绍一下相关的方法。
在Android平台传值,主要使用两种方法一个事 PendingIntent   另一个就是广播了
按照大类,我把相关的类进行了划分
1.实体类 Intent   、Context 、   BroadcastReceiver
2.方法类 PendingIntent Context.sendBroadcast
传递的方法 也就是方法类中的两种
A Intent 字面意思是意图,其实他的效果和字面意思差不多,高焕堂的很多书中都有详细的介绍。
他就像一个快递员,而且是个无所不能的快递员,什么都能送,只要你能把信息加到他上面去
详细的使用方法可以再SDK中找到,如果想要添加你想要的内容 可以用 Intent.set**系列方法。
B Context 这个翻译成环境更好一些
顾名思义 他就是获取我们当前的环境状态, 比如说我想知道现在用户使用的什么语言,处于什么状态,航班、静音。用户有没有接打电话
等等,就像我们获取系统时间一样。Context也我们设置了一个容器让我们来获取系统的状况。
因为这个系统状况很重要,有的时候就是以系统状态为依据,所以Intent 好多方法都要加入这个 都需要 Intent.context
C BroadcastReceiver   是专门用来接收广播的类
    所以他有一个OnReceive()的方法 而具体的接受 我在下面详述。
α PendingIntent   这个方法就是直接传递 Intent
好传出了,怎么才能保证能接收到呢?因为Intent是一个很强大的快递员,他能记录货物需要达到的地点,所以PendingIntent 干吗,他相当于一个Intent的工作场所,他只负责吧Intent送出去
而Intent 去那里,直接告诉 Intent就可以了
通过下面这条语句就可以达到显影的效果   intent.setClass(Activity.this//指代Activity, Report.class//指代目标类);
接收端怎么获取消息呢,这个也简单。因为Intent 已经按照他自己的地址来到了所处的地方,我们直接实例化就行了。
当然这是在简单的情况下,就是说如果这个公司只有一个货物所以我们之需要一个快递员就可以,接收方目前只有这个货物需要接收,那快递员一到他接收方只要确认一下就知道他来干嘛了。
但多数情况下,两家公司的业务非常繁忙,所以可能有多个快递员,多个货物,同一个部门可能有多个。那么怎么来做呢。就需要加限定规则
(1)首先是 在Intent中加限定,可以设定一个 Permission String   就像暗号一样,如果暗号对了肯定错不了 (这个在广播方法中很重要)
(2)另一个就是在实例化的时候确定好实例的是那个一个 参数
具体的请大家参看SDK
β 使用广播来进行数据传递
如果直接使用PendingIntent 是有目的的传送, 那广播可真算是漫无目的的传送信息了
其实Broadcast 中传递的内容也是Intent ,但可以传递的范围可是远的多。
而且系统的很多其他程序也在发送广播,比如说手机的状态,还要说一下航班状态,如果出于航班状态,那么系统就会自动发送广播,而我们只要去接收就好,这样我们就能知道哦,系统现在时在广播状态。
   而在Widget 接受方法使用广播,一方面是因为AppWidget 本来就是继承BroadcastReciever 所以比较纯,不会出问题。另外,这个是我的个人判断,因为Widget还是和普通的app不同,我估计如果直接给 Widget传送 Intent 又会受到限制,就像 handler的一样,当然这是我的猜测,但是感觉还是用 广播靠谱
   广播的载体是Intent,但是他们的标号则是Action。系统内定了很多Action。
   当然我们也可以自己定义Intent 。 之需要 Intent("你自己定义的一个字符串")
   接收方麻烦一些 需要 注册
registerReceiver(intent, commandFilter);
   第二个参数是Intent的过滤,而且不能为空。
   如果是自己定义的Action 那还需要
String action = intent.getAction();
if (action.equals("自定定义的Action")) { 相应的Intent的实例化 必须在这里进行
}
Σ Widget 使用 PendingIntent 是因为 没有其他的方法了。说实话 AppWidget 就给我们一个可以使用RemoteViews 的方法,别的都不能用。所以就顺势写了一个SetPeningIntent 当然这个方法也有很多固定的用法,启动服务,启动活动 ,发送广播,基本上该有的他都有了 。
3.最后再来说一下 Action   其实一个字符串但是这个字符串 因为很长所以基本上很少有人和其明明重合
他们就是来定义一些状态,还是航空状态,他的的Action就是
ACTION_AIRPLANE_MODE_CHANGED
分享到:
评论

相关推荐

    Android应用源码之Intent_Intent.zip

    Intent主要有两种类型:显式Intent和隐式Intent。显式Intent通过指定目标组件的完整类名来明确表示要启动哪个组件。而隐式Intent则不指定具体组件,而是通过Action、Data、Category等元数据来定义一个操作,允许...

    Android的Intent实验

    过滤器包含动作、数据URI、类别等元素,系统会对比Intent和过滤器来决定Intent应由哪个组件处理。 9. **Intent的生命周期** 在Activity中,Intent可以通过`onNewIntent(Intent intent)`方法获取,而在Service中,...

    Android利用Intent启动和关闭Activity

    【Android Intent 启动和关闭Activity】 在Android应用程序开发中,Intent是连接各个组件(如Activity、Service等)的关键桥梁,主要用于启动和关闭Activity。Intent不仅能够启动一个新的Activity,还能在Activity...

    Android Intent和Intent Filter详解

    【Android Intent和Intent Filter详解】 Intent是Android系统中用于组件间通信的重要机制,它描述了想要执行的操作和可能涉及的数据。Intent对象包含了组件信息、动作(Action)、数据(Data)、类别(Category)...

    Android案例:拨打电话+发送短信。利用Intent意图

    总结起来,这个Android案例展示了如何利用Intent来拨打电话和发送短信。通过理解Intent的工作原理和权限管理,开发者可以轻松地将这些功能集成到自己的应用程序中,为用户提供更丰富的交互体验。在实际开发中,根据...

    Android应用源码之Intent1_Intent.zip

    Intent1_Intent.zip中的源码应该包含了关于Intent的实例和使用方法,让我们一起深入探讨Intent在Android应用中的作用、类型、创建与传递、以及常见用法。 1. **Intent的作用** Intent的主要功能是启动一个活动...

    Android应用源码之Intent.zip

    通过分析这个"Intent.zip"中的源码,开发者可以深入理解Intent的工作原理,学习如何正确地创建和使用Intent,以及如何设计和解析IntentFilter,这对于提高Android应用的交互性和灵活性具有重要意义。

    android中Activity和Intent的关系

    Intent分为显式Intent和隐式Intent。显式Intent明确指定要启动的Activity,通过类名或组件名来指定目标;而隐式Intent不指定具体的目标,而是通过Action、Data、Category等元数据来描述一个通用的任务,例如打开一个...

    android整合--intent

    Intent主要分为显式Intent和隐式Intent两种类型: 1. 显式Intent:显式Intent明确指定了要启动的目标组件(Activity或Service),通过组件的完整类名来指定。这种方式确保Intent只被指定的组件接收。 2. 隐式...

    android各种文件的intent

    在Android开发中,`Intent`是一种消息对象,它允许您启动Activity、Service或者发送Broadcast等。简单来说,Intent是应用程序组件之间进行交互的一种方式。它可以携带少量数据,并指定一个要执行的动作(例如查看...

    android各组件详解- Intent.

    它是一种用于描述即将执行操作的抽象消息,能够激活Android的三大核心组件:活动(Activity)、服务(Service)和广播接收器(BroadcastReceiver)。通过Intent,开发者能够灵活地在组件间传递数据和命令,实现复杂...

    Android intent原理分析

    本文旨在深度剖析Android中Intent的工作原理,涵盖其架构、发送及接收过程,并辅以实例加深理解。 #### 二、Intent架构详解 Intent的架构主要由三部分组成: 1. **客户端(Client)**:即发起Intent的组件,如...

    Android_Intent和Intent_Filter详解

    Android Intent和Intent_Filter详解 Android Intent是 Android 组件间通信的载体,它们之间的通信是通过 Intent 对象在不断传递实现的。Android 的三大核心组件 Activity、Service 和 BroadcastReceiver 都是通过 ...

    Android Activity和Intent机制学习笔记

    ### Android Activity和Intent机制详解 #### 一、Activity机制概览 **1.1 定义及作用** 在Android开发中,Activity是最基本的应用组件之一,可以将其理解为用户界面的一个屏幕。它提供了用户与应用交互的主要场所...

    安卓Android源码——Intent.rar

    Intent有两种主要类型:显式Intent和隐式Intent。显式Intent通过指定目标组件的类名来明确指定接收者,而隐式Intent则通过指定行动(Action)、数据URI(Data)和类别(Category)来让系统选择合适的接收者。 2. **...

    Android源码——Intent切换.zip

    首先,Intent分为显式Intent和隐式Intent两种类型。显式Intent明确指定了要启动的目标组件(Activity或Service),通过其类名或者组件的ComponentName来指定。而隐式Intent并不指定具体组件,而是通过Action、Data、...

    android.intent.action.TIME_TICK

    3. 注册IntentFilter:为IntentFilter添加对应的ACTION,如"android.intent.action.TIME_TICK"、"android.intent.action.SCREEN_ON"和"android.intent.action.BATTERY_CHANGED"。 4. 不再需要时,记得在合适的位置...

    Android中intent的使用

    在Android系统中,Intent分为显式Intent和隐式Intent两种类型。 1. 显式Intent:明确指定要启动的组件(Activity、Service等)的类名。这种Intent通常用于在同一应用内部进行组件间的通信,确保消息只发送到预设的...

    Android中关于Broadcast、Intent 的应用

    Intent有两种主要类型:显式Intent和隐式Intent。显式Intent明确了要启动的目标组件,通过组件的类名进行指定;而隐式Intent则不指定具体目标,而是根据Intent的Action、Category、Data等信息匹配能处理该Intent的...

    Android学习总结-Intent详解.doc

    Intent在Android开发中扮演着至关重要的角色,它是四大组件(Activity、Service、BroadcastReceiver和ContentProvider)间通信的关键。Intent不仅用于应用间的交互,也可以在同一个应用内的不同组件之间传递信息。...

Global site tag (gtag.js) - Google Analytics