码迷,mamicode.com
首页 > 移动开发 > 详细

Android Intent 解析之三

时间:2014-07-18 22:30:03      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:android   broadcast   frameworks   intent   broadcastreceiver   

Intent的接收过程:

1、Receiver的注册
这个之前已经介绍过了
接下来就看看上面遗留的两个接收函数了, scheduleReceiver scheduleRegisteredReceiver;

scheduleReceiver会掉到activitythread.java中的scheduleReceiver函数, activitythread.java这个就是目标activity的主体,然后该函数就调用到该文件中的handlemessage函数,这个函数在收到RECEIVER消息后就调用handleReceiver来处理,这是一个重要的函数,下面分析一下这个函数的处理:
1,取得这个Intent指向的component,包括包名,类名;
2,取得包信息,这个结构提供了getClassLoader接口;

3,通过java.lang.ClassLoader cl = packageInfo.getClassLoader取得classLoader; 4,动态创建一个receiver,receiver = (BroadcastReceiver)cl.loadClass(component).newInstance(); 5,调用receiver.onReceive(context.getReceiverRestrictedContext(), data.intent),进入到真正的处理流程中去了; 6,调用finishReceiver来触发ActivityManagerService这个消息到其它receivers的发送或者下一个broadcast的发送;

这其中最重要的就是这个onReceive函数,我们通常都会实现这么一个函数,然后在里面处理我们收到的消息;
scheduleRegisteredReceiver的逻辑
这个函数其实就是针对你使用动态注册的方式而弄的,也就是你在代码的中调用register注册的方式。

总结:

Intent 从使用的角度来说,就是构造Intent,提供适当的参数,比如Action,比如数据类型,数据的uri等,然后发送出去;接收方需要注册一个 receiver,然后提供onReceive函数就可以了;这个注册可以简单的写在AndroidManifest.xml里面也可以通过 registerReceiver来完成; 发送的时候有三个API可以用: sendBroadcast sendStickyBroadcast sendOrderedBroadcast 第一个用于发送并行广播; 第二个用于发送粘性广播; 第三个用于发送串行广播;

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

Android Intent 解析之三

标签:android   broadcast   frameworks   intent   broadcastreceiver   

原文地址:http://blog.csdn.net/cqinghua/article/details/37882491

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!