Android多進(jìn)程總結(jié)一:生成多進(jìn)程(android:process屬性) - lixpjita39的專(zhuān)欄 - CSDN博客請(qǐng)?zhí)砑渔溄用枋?/p>
專(zhuān)注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)筠連免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。以下兩種方式都是基于bindService啟動(dòng)服務(wù)。
http://www.open-open.com/lib/view/open1469493830770.html
使用Messenger的好處就是如果有多個(gè)請(qǐng)求,不會(huì)沖突,會(huì)將請(qǐng)求放入請(qǐng)求隊(duì)列中一個(gè)一個(gè)執(zhí)行任務(wù)。
首先要明確哪個(gè)是客戶端,哪個(gè)是服務(wù)端。
Service是聲明在服務(wù)端工程里的,因?yàn)橐豢蛻舳斯こ陶{(diào)用到,所以是隱式聲明的:
` <service android:name=".aidl.MessengerServiceDemo" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="com.lypeer.messenger"></action>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</service>
<activity android:name=".aidl.ActivityMessenger"/>`
服務(wù)端工程安裝好后,開(kāi)啟客戶端工程,綁定服務(wù)端聲明的服務(wù)。(服務(wù)端服務(wù)不一定要事先開(kāi)啟了,聲明了即可。)
注意: 客戶端工程隱式調(diào)用服務(wù)端開(kāi)啟的那個(gè)service,傳給intent的包名是服務(wù)端的包名,并非自己的包名。
`public class MainActivity extends AppCompatActivity {
static final int MSG_SAY_HELLO = 1;
Messenger mService = null;
boolean mBound;
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
//接收onBind()傳回來(lái)的IBinder,并用它構(gòu)造Messenger
mService = new Messenger(service);
mBound = true;
}
public void onServiceDisconnected(ComponentName className) {
mService = null;
mBound = false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.sample_text).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sayHello(view);
}
});
}
//調(diào)用此方法時(shí)會(huì)發(fā)送信息給服務(wù)端
public void sayHello(View v) {
if (!mBound) return;
//發(fā)送一條信息給服務(wù)端
Message msg = Message.obtain(null, MSG_SAY_HELLO, 1, 2);
try {
mService.send(msg);
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
protected void onStart() {
super.onStart();
//綁定服務(wù)端的服務(wù),此處的action是service在Manifests文件里面聲明的
Intent intent = new Intent();
intent.setAction("com.lypeer.messenger");
//不要忘記了包名,不寫(xiě)會(huì)報(bào)錯(cuò)
intent.setPackage("com.example.lianxiang.cmakedemo1");
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
@Override
protected void onStop() {
super.onStop();
// Unbind from the service
if (mBound) {
unbindService(mConnection);
mBound = false;
}
}
}`
這樣,在客戶端就可以操作,實(shí)現(xiàn)與服務(wù)端工程的一個(gè)交互。
Messenger實(shí)現(xiàn)的進(jìn)程間的交互,只是信息的傳遞,客戶端無(wú)法直接調(diào)用服務(wù)端的方法,所以AIDL就是解決的這個(gè)問(wèn)題。
2)AIDL
http://www.open-open.com/lib/view/open1469493649028.html (上)
https://www.jianshu.com/p/a8e43ad5d7d2 (上面的博客顯示有問(wèn)題,這個(gè)是簡(jiǎn)書(shū)的版本。)
按照博主所說(shuō)的,結(jié)果能實(shí)現(xiàn)。
2-1)新建aidl文件,注意新建的規(guī)則。
2-2)注意aidl及java類(lèi)的目錄的問(wèn)題,并且保證服務(wù)端與客戶端都存在aidl與java文件。
2-3)服務(wù)端聲明service,service里調(diào)用aidl自動(dòng)生成的java類(lèi)。
2-4)客戶端綁定服務(wù)端的service,調(diào)用aidl轉(zhuǎn)化的類(lèi)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱:AIDL深入學(xué)習(xí)-創(chuàng)新互聯(lián)
本文地址:http://jinyejixie.com/article44/dipdhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、小程序開(kāi)發(fā)、靜態(tài)網(wǎng)站、外貿(mào)建站、手機(jī)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容