zoukankan      html  css  js  c++  java
  • 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在过程中。

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

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

  • 相关阅读:
    activemq 异步和同步接收
    简单的activemq的封装和使用
    activemq 一个不错的ppt
    activemq 的小实验
    activemq api的封装
    观察者设计模式例子
    【转载】自定义类加载器例子
    京东拍拍网 笔试 搞java的去考C++ 苦逼
    java中用equals比较两个内容相同的字符数组
    云端飘 String s=new String("abc")创建了几个对象?
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4664747.html
Copyright © 2011-2022 走看看