认识IBinder和Binder
16lz
2021-01-23
IBinder源码:
package android.os;import android.annotation.NonNull;import android.annotation.Nullable;import java.io.FileDescriptor;public interface IBinder { /** * The first transaction code available for user commands. */ int FIRST_CALL_TRANSACTION = 0x00000001; /** * The last transaction code available for user commands. */ int LAST_CALL_TRANSACTION = 0x00ffffff; /** * IBinder protocol transaction code: pingBinder(). */ int PING_TRANSACTION = ('_'<<24)|('P'<<16)|('N'<<8)|'G'; /** * IBinder protocol transaction code: dump internal state. */ int DUMP_TRANSACTION = ('_'<<24)|('D'<<16)|('M'<<8)|'P'; /** * IBinder protocol transaction code: execute a shell command. * @hide */ int SHELL_COMMAND_TRANSACTION = ('_'<<24)|('C'<<16)|('M'<<8)|'D'; /** * IBinder protocol transaction code: interrogate the recipient side * of the transaction for its canonical interface descriptor. */ int INTERFACE_TRANSACTION = ('_'<<24)|('N'<<16)|('T'<<8)|'F'; int TWEET_TRANSACTION = ('_'<<24)|('T'<<16)|('W'<<8)|'T'; int LIKE_TRANSACTION = ('_'<<24)|('L'<<16)|('I'<<8)|'K'; /** @hide */ int SYSPROPS_TRANSACTION = ('_'<<24)|('S'<<16)|('P'<<8)|'R'; int FLAG_ONEWAY = 0x00000001; public static final int MAX_IPC_SIZE = 64 * 1024; public @Nullable String getInterfaceDescriptor() throws RemoteException; public boolean pingBinder(); public boolean isBinderAlive(); public @Nullable IInterface queryLocalInterface(@NonNull String descriptor); public void dump(@NonNull FileDescriptor fd, @Nullable String[] args) throws RemoteException; public void dumpAsync(@NonNull FileDescriptor fd, @Nullable String[] args) throws RemoteException; public void shellCommand(@Nullable FileDescriptor in, @Nullable FileDescriptor out, @Nullable FileDescriptor err, @NonNull String[] args, @Nullable ShellCallback shellCallback, @NonNull ResultReceiver resultReceiver) throws RemoteException; public boolean transact(int code, @NonNull Parcel data, @Nullable Parcel reply, int flags) throws RemoteException; public interface DeathRecipient { public void binderDied(); } public void linkToDeath(@NonNull DeathRecipient recipient, int flags) throws RemoteException; public boolean unlinkToDeath(@NonNull DeathRecipient recipient, int flags);}
Binder源码:
public class Binder implements IBinder { /* * Set this flag to true to detect anonymous, local or member classes * that extend this Binder class and that are not static. These kind * of classes can potentially create leaks. */ private static final boolean FIND_POTENTIAL_LEAKS = false; /** @hide */ public static final boolean CHECK_PARCEL_SIZE = false; static final String TAG = "Binder"; /** @hide */ public static boolean LOG_RUNTIME_EXCEPTION = false; // DO NOT SUBMIT WITH TRUE /** * Control whether dump() calls are allowed. */ private static volatile String sDumpDisabled = null;
更多相关文章
- android练习一之获取网页源码
- Android 手电筒源码
- Android测试之Monkey原理及源码分析(二)
- Android全部源码导入Eclipse
- Android ServiceManager源码(一)-- C语言部分
- WINDOWS下ECLIPSE ANDROID源码SETTINGS模块调试
- Android短彩信源码解析-短信发送流程(二)
- Android SDK源码提取Python脚本(4.0SDK源码下载地址)