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在过程中。

从那里进入了世界(转到服务器去)。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

更多相关文章

  1. android developer API Guider之user interface---Settings(二)
  2. 传统menu的使用方法总结
  3. 理解---Android(安卓)向右滑动销毁(finish)Activity, 随着手势的滑
  4. Android客户端三步完成支付宝支付SDK接入
  5. Android(安卓)AIDL的实现
  6. Android在绘制View之前计算其高度 / 宽度
  7. Android(安卓)壁纸设置_01
  8. Android(安卓)Studio使用AIDL技术进行SDK开发
  9. Android(安卓)Audio代码分析5 - 函数getAudioSessionId

随机推荐

  1. 使用ARouter进行Android模块化开发
  2. Android(安卓)studio打开机智云APP(自动
  3. Android中获取手机IMEI,IMSI, MAC(Android(
  4. Android应用发布后的统计——百度移动统
  5. Android通过Okhttp3实现socket长连接
  6. APP切图那点事儿–详细介绍android和ios
  7. Android(安卓)画板(简单的自定义控件)
  8. Android(安卓)monkey介绍
  9. android MVP——mvp架构的应用和优化
  10. 【Android】手撸抖音小游戏潜艇大挑战