Intent的实质是binder
Intent 的实质是binder,如下为代码流程。
常见场景:
Intent intent = newIntent(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
mContext.sendBroadcast(intent);
ActivityManagerNative.java
public int broadcastIntent(IApplicationThread caller,
Intent intent, String resolvedType, IIntentReceiver resultTo,
intresultCode, String resultData, Bundle map,
String requiredPermission, int appOp, boolean serialized,
boolean sticky, int userId) throws RemoteException
{
mRemote.transact(BROADCAST_INTENT_TRANSACTION,data, reply, 0); //此处即为binder通信机制实现
ActivityManagerNative.java
public booleanonTransact(int code, Parcel data, Parcel reply, int flags)
case BROADCAST_INTENT_TRANSACTION:
{
data.enforceInterface(IActivityManager.descriptor);
IBinder b =data.readStrongBinder();
int res = broadcastIntent(app,intent, resolvedType, resultTo,
resultCode, resultData,resultExtras, perm, appOp,
serialized, sticky,userId);
本文探讨了Android中Intent的实质——Binder通信机制。通过举例发送广播Intent的流程,展示了从`sendBroadcast`到`ActivityManagerNative`的Binder调用过程,揭示了Intent在进程间通信的关键角色。
1322

被折叠的 条评论
为什么被折叠?



