我必须和IBinders 和Parcels 一起工作。我已经浏览了所有IBinder、Binder和Parcel文档,但找不到任何关于何时调用的内容Parcel.recycle(我也从未读过任何说 aparcel必须被回收的内容)。我见过类似下面的例子:
void someMethod(IBinder binder) {
final int code = // ...
final Parcel data = Parcel.obtain()
final Parcel reply = Parcel.obtain()
try {
binder.transact(code, data, reply, 0);
} finally {
data.recycle();
reply.recycle();
}
}
Run Code Online (Sandbox Code Playgroud)
但令我困惑的是,在每个例子中,我都没有看到这一点:
class MyBinder extends Binder {
@Override
public boolean onTransact(int code, Parcel data, Parcel reply, int flags) {
try {
// do things...
} finally {
data.recycle(); …Run Code Online (Sandbox Code Playgroud)