




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android跨進(jìn)程IPC通信AIDL機(jī)制原理的示例分析
簡介使用場景定義AIDL接口/upload/information/20200623/125/124589.png定義.aidl文件定義AIDL接口時(shí)需要注意如下:package
com.sunny.server;
import
com.sunny.server.bean.User;
interface
IRemoteService
{
void
basicTypes(int
anInt,
long
aLong,
boolean
aBoolean,
float
aFloat,
double
aDouble,
String
aString);
String
getName();
void
setListData(in
List<String>
inList,out
List<String>
outList);
void
setMapData(in
Map
map);
void
setUser(in
User
user);
}package
com.sunny.server.bean;
parcelable
User;Service實(shí)現(xiàn)AIDL接口@Override
public
void
setListData(java.util.List<java.lang.String>
inList,
java.util.List<java.lang.String>
outList)
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.writeStringList(inList);
mRemote.transact(Stub.TRANSACTION_setListData,
_data,
_reply,
0);
_reply.readException();
_reply.readStringList(outList);
}
finally
{
_reply.recycle();
_data.recycle();
}
}public
class
MyService
extends
Service
{
private
static
final
String
TAG
=
"AIDL_Server";
@Nullable
@Override
public
IBinder
onBind(Intent
intent)
{
return
mBinder;
}
private
IRemoteService.Stub
mBinder
=
new
IRemoteService.Stub()
{
@Override
public
void
basicTypes(int
anInt,
long
aLong,
boolean
aBoolean,
float
aFloat,
double
aDouble,
String
aString)
throws
RemoteException
{
Log.d(TAG,
"anInt:"
+
anInt
+
"
aLong:"
+
aLong
+
"
aBoolean:"
+
aBoolean
+
"
aFloat:"
+
aFloat
+
"
aDouble:"
+
aDouble
+
"
aString:"
+
aString);
}
@Override
public
String
getName()
throws
RemoteException
{
return
"admin";
}
@Override
public
void
setListData(List<String>
inList,
List<String>
outList)
throws
RemoteException
{
Log.d(TAG,
"inList:"
+
inList.toString());
setOutList(outList);
}
@Override
public
void
setMapData(Map
map)
throws
RemoteException
{
Log.d(TAG,
"map:"
+
map.toString());
}
@Override
public
void
setUser(User
user)
throws
RemoteException
{
Log.d(TAG,
"user:"
+
user.toString());
}
};
private
void
setOutList(List<String>
list)
{
list.add("out_01");
list.add("out_02");
list.add("out_03");
}
}調(diào)用IPC方法public
class
MainActivity
extends
AppCompatActivity
{
private
static
final
String
TAG
=
"AIDL_Client";
private
MyConnection
conn;
private
IRemoteService
service;
private
List<String>
outList=new
ArrayList<>();
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public
void
startBind(View
v)
{
Intent
intent
=
new
Intent();
conn=new
MyConnection();
intent.setAction("com.sunny.server.service.MyService");
bindService(intent,
conn,
Context.BIND_AUTO_CREATE);
}
public
void
startExecute(View
v)
{
try
{
service.basicTypes(1,
10000L,
true,
1.5f,
300.3,
"Hello
World");
Log.d(TAG,
"getName:"
+
service.getName());
List<String>
inList
=
new
ArrayList<String>();
inList.add("inList01");
inList.add("inList02");
service.setListData(inList,
outList);
Log.d(TAG,
"outList:"
+
outList.toString());
Map<String,
String>
map
=
new
HashMap<String,
String>();
map.put("key01",
"value01");
map.put("key02",
"value02");
service.setMapData(map);
User
user
=
new
User();
user.setId(1001);
user.setName("admin");
service.setUser(user);
}
catch
(RemoteException
e)
{
e.printStackTrace();
}
}
private
class
MyConnection
implements
ServiceConnection
{
public
void
onServiceConnected(ComponentName
name,
IBinder
binder)
{
service
=
IRemoteService.Stu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版生物七年級(jí)下冊(cè)第四單元第六章第三節(jié)《神經(jīng)調(diào)節(jié)的基本方式》教學(xué)設(shè)計(jì)
- 人教版九年級(jí)歷史下冊(cè)第六單元第12課亞非拉的奮起教學(xué)設(shè)計(jì)
- 小自考行政管理考試動(dòng)態(tài)與試題答案2024
- 浙江省溫州市八年級(jí)語文上冊(cè) 第六單元 23《周亞夫軍細(xì)柳》教學(xué)設(shè)計(jì) 新人教版
- 2024年CPBA考試網(wǎng)絡(luò)資源試題及答案
- 招聘專業(yè)的面試題及答案
- 市場營銷績效評(píng)估小自考試題及答案
- 小自考行政管理考點(diǎn)分析試題及答案
- 酒吧管理與調(diào)酒師的結(jié)合試題及答案
- 2024年檔案管理員考試重點(diǎn)內(nèi)容試題
- 中層干部崗位競聘報(bào)名表格評(píng)分表格評(píng)分標(biāo)準(zhǔn)
- 小學(xué)音樂西南師大五年級(jí)下冊(cè)(2023年新編)第二單元新疆樂韻-敲手鼓的小巴郎教案
- 思想道德與法治課件:第六章 第一節(jié) 社會(huì)主義法律的特征和運(yùn)行
- 有限空間作業(yè)及應(yīng)急物資清單
- 《個(gè)人信息保護(hù)法》解讀
- 廣西河池市隆友鋅銀鉛銻礦區(qū)
- 新疆高速公路建設(shè)工程季節(jié)性施工方案
- 新版(七步法案例)PFMEA
- 《水泵房巡查流程》word版
- 電力時(shí)間同步監(jiān)測系統(tǒng)V20
- 關(guān)于吳姓的歷史和現(xiàn)狀的研究報(bào)告
評(píng)論
0/150
提交評(píng)論