安卓面试 知识点 AIDL 整理Word文件下载.docx
- 文档编号:14366448
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:15
- 大小:18.46KB
安卓面试 知识点 AIDL 整理Word文件下载.docx
《安卓面试 知识点 AIDL 整理Word文件下载.docx》由会员分享,可在线阅读,更多相关《安卓面试 知识点 AIDL 整理Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
*Originalfile:
/Users/dream/Downloads/android/androidProject/TAIDL/src/com/example/taidl/ICalcAIDL.aidl
*/
publicinterfaceICalcAIDLextendsandroid.os.IInterface
{
/**Local-sideIPCimplementationstubclass.*/
publicstaticabstractclassStubextendsandroid.os.Binderimplementscom.example.taidl.ICalcAIDL
privatestaticfinaljava.lang.StringDESCRIPTOR="
com.example.taidl.ICalcAIDL"
;
/**Constructthestubatattachittotheinterface.*/
publicStub()
this.attachInterface(this,DESCRIPTOR);
}
/**
*CastanIBinderobjectintoancom.example.taidl.ICalcAIDLinterface,
*generatingaproxyifneeded.
publicstaticcom.example.taidl.ICalcAIDLasInterface(android.os.IBinderobj)
if((obj==null)){
returnnull;
android.os.IInterfaceiin=obj.queryLocalInterface(DESCRIPTOR);
if(((iin!
=null)&
&
(iininstanceofcom.example.taidl.ICalcAIDL))){
return((com.example.taidl.ICalcAIDL)iin);
returnnewcom.example.taidl.ICalcAIDL.Stub.Proxy(obj);
@Overridepublicandroid.os.IBinderasBinder()
returnthis;
@OverridepublicbooleanonTransact(intcode,android.os.Parceldata,android.os.Parcelreply,intflags)throwsandroid.os.RemoteException
switch(code)
caseINTERFACE_TRANSACTION:
reply.writeString(DESCRIPTOR);
returntrue;
caseTRANSACTION_add:
data.enforceInterface(DESCRIPTOR);
int_arg0;
_arg0=data.readInt();
int_arg1;
_arg1=data.readInt();
int_result=this.add(_arg0,_arg1);
reply.writeNoException();
reply.writeInt(_result);
caseTRANSACTION_min:
int_result=this.min(_arg0,_arg1);
returnsuper.onTransact(code,data,reply,flags);
privatestaticclassProxyimplementscom.example.taidl.ICalcAIDL
privateandroid.os.IBindermRemote;
Proxy(android.os.IBinderremote)
mRemote=remote;
returnmRemote;
publicjava.lang.StringgetInterfaceDescriptor()
returnDESCRIPTOR;
@Overridepublicintadd(intx,inty)throwsandroid.os.RemoteException
android.os.Parcel_data=android.os.Parcel.obtain();
android.os.Parcel_reply=android.os.Parcel.obtain();
int_result;
try{
_data.writeInterfaceToken(DESCRIPTOR);
_data.writeInt(x);
_data.writeInt(y);
mRemote.transact(Stub.TRANSACTION_add,_data,_reply,0);
_reply.readException();
_result=_reply.readInt();
finally{
_reply.recycle();
_data.recycle();
return_result;
@Overridepublicintmin(intx,inty)throwsandroid.os.RemoteException
mRemote.transact(Stub.TRANSACTION_min,_data,_reply,0);
staticfinalintTRANSACTION_add=(android.os.IBinder.FIRST_CALL_TRANSACTION+0);
staticfinalintTRANSACTION_min=(android.os.IBinder.FIRST_CALL_TRANSACTION+1);
publicintadd(intx,inty)throwsandroid.os.RemoteException;
publicintmin(intx,inty)throwsandroid.os.RemoteException;
2.新建一个Service
importandroid.app.Service;
importandroid.content.Intent;
importandroid.os.IBinder;
importandroid.os.RemoteException;
importandroid.util.Log;
publicclassCalcServiceextendsService{
privatestaticfinalStringTAG="
server"
publicvoidonCreate()
{
Log.e(TAG,"
onCreate"
);
}
publicIBinderonBind(Intentt)
onBind"
returnmBinder;
publicvoidonDestroy()
onDestroy"
super.onDestroy();
publicbooleanonUnbind(Intentintent)
onUnbind"
returnsuper.onUnbind(intent);
publicvoidonRebind(Intentintent)
onRebind"
super.onRebind(intent);
privatefinalICalcAIDL.StubmBinder=newICalcAIDL.Stub(){
@Override
publicintmin(intx,inty)throwsRemoteException{
returnx+y;
}
publicintadd(intx,inty)throwsRemoteException{
//TODOAuto-generatedmethodstub
returnx-y;
};
创建了一个mBinder对象,并在Service的onBind方法中返回
注册:
<
serviceandroid:
name="
com.example.taidl.CalcService"
>
intent-filter>
actionandroid:
com.example.taidl.calc"
/>
categoryandroid:
android.intent.category.DEFAULT"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安卓面试 知识点 AIDL 整理 面试