Android Intent 解析之一

Intent的架构包括三方面:

Client,也就是发送这个Intent的activity;

Server,也就是activityManagerService.java,它主要是负责分发这些Intent给适当的对象;

Target,也就是那些需要处理这个Intent的activity,我们称为Receiver;

Intent的三个主要方面:Action、Data、Category在之前的文档中也有介绍,在此就不在叙述了。

下面回到前面的例子:

Intent intent = new Intent(AudioManager.ACTION_AUDIO_BECOMING_NOISY);

mContext.sendBroadcast(intent);

第一句话是构造一个Intent,注意只传入了一个参数,这个参数就是一个Action,没有指定data以及Category;也就是说如果某个Receiver写成这样(在AndroidManifext.xml里面):

<receiver android:name="MediaButtonIntentReceiver">

<intent-filter>

<action android:name="android.media.AUDIO_BECOMING_NOISY" />

</intent-filter> </receiver>

当然,如果不喜欢在.xml里面指定,也可以直接在你的应用里面使用代码注册,调用registerReceiver将你的对象注册到系统中去,效果是一样的。

这样,一旦这个应用监测到这个广播消息之后,他的onReceiver函数就会被调用了。

第二句话的目的是把这个消息广播出去,这个是异步的,也就是说广播出去就没事了,谁关系谁处理,从此和我没有任何关系了。

mContext.sendBroadcast(intent);这句之中的mContex即Application Context,这是一个典型的binder调用,调用之后就转到ActivityManagerNative.java中处理了。从此便进入了另一个世界(跑到服务端去了)。

Android Intent 解析之一,布布扣,bubuko.com

时间: 2024-10-07 16:56:12

Android Intent 解析之一的相关文章

Android Intent 解析之二

服务端Intent执行过程: Sticky:这个类型的BroadCast表示某些Intent需要被保留,当新的应用起来后,需要关注这个消息,但是呢,又不需要启动这个应用来接收此消息,比如耳机插入等消息. 这个函数的主要作用就是根据这个Intent的特点,构造BroadCastRecord加入到不同的列表,等待被处理: 这样发送就到了下面这个函数中了: 控制到了scheduleBroadcastsLocked这里,它的逻辑很简单: private final void scheduleBroadc

Android Intent 解析之三

Intent的接收过程: 1.Receiver的注册 这个之前已经介绍过了 接下来就看看上面遗留的两个接收函数了, scheduleReceiver scheduleRegisteredReceiver: scheduleReceiver会掉到activitythread.java中的scheduleReceiver函数, activitythread.java这个就是目标activity的主体,然后该函数就调用到该文件中的handlemessage函数,这个函数在收到RECEIVER消息后就调

Android Intent简介

Intent对象主要用来在Android程序的Activity,Service和BroadcastReceiver这3大组件之间传输数据, 而针对这3大组件,有独立的Intent传输机制,分别如下:1.Activity:通过将一个Intent对象传递给Context.startActivity()或Activity.startActivityForResult(), 启动一个活动或者使用一个已经存在的活动去做新的事情.2.Service:通过将一个Intent对象传递给Content.start

[Android] Intent详解

[转]http://www.cnblogs.com/engine1984/p/4146621.html [正文] Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互.Intent这

Android源代码解析之(三)--&amp;gt;异步任务AsyncTask

转载请标明出处:一片枫叶的专栏 上一篇文章中我们解说了android中的异步消息机制. 主要解说了Handler对象的使用方式.消息的发送流程等.android的异步消息机制是android中多任务处理的基础,Handler是整个android应用层体系异步消息传递的基础组件,通过对Handler源代码的解析的解析相信大家对android中的异步消息机制有了一个大概的了解.很多其它关于android中的异步消息机制的知识可參考我的:android源代码解析之(二)–>异步消息机制 android

Android Intent 使用整理

在一个Android应用中,主要是由一些组件组成,(Activity,Service,ContentProvider,etc.)在这些组件之间的通讯中,由Intent协助完成. 正如网上一些人解析所说,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.Intent在这里起着实现调用者与被调用者之间的解耦作用.Intent传递过程中,要找到目标消费者(另一个Act

android Intent机制详解

什么是Intent Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件.通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求.比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,

Android Intent Scheme URLs攻击

0x0 引言 我们知道,在Android上的Intent-based攻击很普遍,这种攻击轻则导致应用程序崩溃,重则可能演变提权漏洞.当然,通过静态特征匹配,Intent-Based的恶意样本还是很容易被识别出来的. 然而最近出现了一种基于Android Browser的攻击手段--Intent Scheme URLs攻击.这种攻击方式利用了浏览器保护措施的不足,通过浏览器作为桥梁间接实现Intend-Based攻击.相比于普通Intend-Based攻击,这种方式极具隐蔽性,而且由于恶意代码隐藏

Android——Intent和Intent过滤器

http://www.cnblogs.com/XP-Lee/p/3613830.html Intent就是一个激活组件的消息对象,用于组件之间的通信.需要注意的是,能被Intent激活通信的组件只有三类:Activity.Service和BroadcastReceiver.对应这三类组件,Intent有下面三种使用场景: 启动Activity:在app中,一个Activity就代表一个用户界面.以Intent为参数调用startActivity()启动一个Activity实例.这个Intent告