Merge "Encourage creating Binder tokens with a descriptor."

This commit is contained in:
TreeHugger Robot
2018-07-30 15:31:28 +00:00
committed by Android (Google) Code Review
2 changed files with 22 additions and 1 deletions

View File

@@ -32207,6 +32207,7 @@ package android.os {
public class Binder implements android.os.IBinder {
ctor public Binder();
ctor public Binder(java.lang.String);
method public void attachInterface(android.os.IInterface, java.lang.String);
method public static final long clearCallingIdentity();
method public void dump(java.io.FileDescriptor, java.lang.String[]);

View File

@@ -406,9 +406,28 @@ public class Binder implements IBinder {
public static final native void blockUntilThreadAvailable();
/**
* Default constructor initializes the object.
* Default constructor just initializes the object.
*
* If you're creating a Binder token (a Binder object without an attached interface),
* you should use {@link #Binder(String)} instead.
*/
public Binder() {
this(null);
}
/**
* Constructor for creating a raw Binder object (token) along with a descriptor.
*
* The descriptor of binder objects usually specifies the interface they are implementing.
* In case of binder tokens, no interface is implemented, and the descriptor can be used
* as a sort of tag to help identify the binder token. This will help identify remote
* references to these objects more easily when debugging.
*
* @param descriptor Used to identify the creator of this token, for example the class name.
* Instead of creating multiple tokens with the same descriptor, consider adding a suffix to
* help identify them.
*/
public Binder(@Nullable String descriptor) {
mObject = getNativeBBinderHolder();
NoImagePreloadHolder.sRegistry.registerNativeAllocation(this, mObject);
@@ -420,6 +439,7 @@ public class Binder implements IBinder {
klass.getCanonicalName());
}
}
mDescriptor = descriptor;
}
/**