hook_broadcast_receiver
2017-01-14 23:18:27 0 举报
`hook_broadcast_receiver` 是一个用于监听广播接收器的工具函数。它允许你在不修改原有代码的情况下,对广播接收器的行为进行拦截和处理。通过使用 `hook_broadcast_receiver`,你可以在广播发送时,对接收器的动作进行自定义操作,例如记录日志、修改数据等。这种方式使得广播接收器的使用更加灵活,可以方便地实现一些定制化的需求。同时,由于不需要修改原有代码,也降低了引入错误的风险。总之,`hook_broadcast_receiver` 是一个实用的工具,可以帮助开发者更好地管理和控制广播接收器的行为。
作者其他创作
大纲/内容
BroadcastQueue queue=broadcastQueueForIntent(intent);BroadcastRecord r=new BroadcastRecord(...);boolean replaced=replacePending&&queue.replaceOrderedBroadcastLocked(r);if(!replaced){queue.enqueueOrderedBroadcastLocked(r);queue.scheduleBroadcastsLocked();}
ContextImpl.registerReceiverInternal()
LoadedApk.ReceiverDispatcher.performReceive()
AMS.broadcastIntentLocked()
IIntentReceiver的一个实现是LoadedApk.ReceiverDispatcher
所以要解析BroadcastReceiver信息,可以利用PackageParser的generateActivityInfo()方法
需要注意的是PackageParser.Package中采用与Activity的类型来存放receivers:public final ArrayList activities = new ArrayList(0); public final ArrayList receivers = new ArrayList(0);
IIntentReceiver.performReceive()
而这里IIntentReceiver对象其实是LoadedApk.ReceiverDispatcher
Context.sendBroadcast()
AMS.broadcastIntent()
先分析动态广播的过程
BroadcastQueue--Handler--processNextBroadcast()--performReceiveLocked()
ContextImpl.sendBroadcast()
Args对象--ActivityThread.Handler
ActivityManagerNative.getDefault().broadcastIntent()
Context.registerReceiver()
利用PackageParser解析AndroidManifest文件中的BroadcastReceiver信息
0 条评论
下一页