无法理解AOSP IPackageManager.java中的这个JAVA语句

时间:2017-10-30 17:09:04

标签: android android-source

在AOSP上跟踪安装程序时,我遇到了这些问题,我无法理解他们做了什么。 (我不是java编程的新手,我也不是一个完全专业的java开发人员)

@Override public void installPackage(java.lang.String originPath, android.content.pm.IPackageInstallObserver2 observer, int flags, java.lang.String installerPackageName, android.content.pm.VerificationParams verificationParams, java.lang.String packageAbiOverride) throws     android.os.RemoteException
{
android.os.Parcel _data = android.os.Parcel.obtain();
android.os.Parcel _reply = android.os.Parcel.obtain();
try {
_data.writeInterfaceToken(DESCRIPTOR);
_data.writeString(originPath);
_data.writeStrongBinder((((observer!=null))?(observer.asBinder()):(null)));
_data.writeInt(flags);
_data.writeString(installerPackageName);
if ((verificationParams!=null)) {
_data.writeInt(1);
verificationParams.writeToParcel(_data, 0);
}
else {
_data.writeInt(0);
}
_data.writeString(packageAbiOverride);
mRemote.transact(Stub.TRANSACTION_installPackage, _data, _reply, 0);
_reply.readException();
}
finally {
_reply.recycle();
_data.recycle();
}
}

在上面的代码中,try块内的行是什么工作的?特别是行_data.writeStrongBinder ...做什么?任何有助于理解此代码的指示表示赞赏!

1 个答案:

答案 0 :(得分:0)

_data是一个Parcel对象。您可以查看API文档here

ps。:您可以安装Codota。我实际上可以点击你的代码并查看文档。所以你已经回答了你自己的问题;)