編輯:關於Android編程
官網地址詳解分析:
http://developer.android.com/guide/components/aidl.html
一)什麼是AIDL –》 應用場景 –》 為什麼用它–》什麼情況下試用
個人理解: aidl應用接口編程語言 因為android系統中的不同程序都有自己的jvm,不同程序之間是不能直接訪問對方memory的,為了安全,彼此解耦,一個程序崩潰不至於對其它程序的影響。 那麼在android系統中的機制設置成ipc機制,不同應用程序之間通過操作系統可以識別的語言aidl來進行通信。 在多Application 和多Thread情況下使用。
官網上說的和詳細:
AIDL (Android Interface Definition Language) is similar to other IDLs you might have worked with. It allows you to define the programming interface that both the client and service agree upon in Z喎?/kf/ware/vc/" target="_blank" class="keylink">vcmRlciB0byBjb21tdW5pY2F0ZSB3aXRoIGVhY2ggb3RoZXIgdXNpbmcgaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24gKElQQykuIE9uIEFuZHJvaWQsIG9uZSBwcm9jZXNzIGNhbm5vdCBub3JtYWxseSBhY2Nlc3MgdGhlIG1lbW9yeSBvZiBhbm90aGVyIHByb2Nlc3MuIFNvIHRvIHRhbGssIHRoZXkgbmVlZCB0byBkZWNvbXBvc2UgdGhlaXIgb2JqZWN0cyBpbnRvIHByaW1pdGl2ZXMgdGhhdCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBjYW4gdW5kZXJzdGFuZCwgYW5kIG1hcnNoYWxsIHRoZSBvYmplY3RzIGFjcm9zcyB0aGF0IGJvdW5kYXJ5IGZvciB5b3UuIFRoZSBjb2RlIHRvIGRvIHRoYXQgbWFyc2hhbGxpbmcgaXMgdGVkaW91cyB0byB3cml0ZSwgc28gQW5kcm9pZCBoYW5kbGVzIGl0IGZvciB5b3Ugd2l0aCBBSURMLjwvcD4NCgk8cD5Ob3RlOiBVc2luZyBBSURMIGlzIG5lY2Vzc2FyeSBvbmx5IGlmIHlvdSBhbGxvdyBjbGllbnRzIGZyb20gZGlmZmVyZW50IGFwcGxpY2F0aW9ucyB0byBhY2Nlc3MgeW91ciBzZXJ2aWNlIGZvciBJUEMgYW5kIHdhbnQgdG8gaGFuZGxlIG11bHRpdGhyZWFkaW5nIGluIHlvdXIgc2VydmljZS4gSWYgeW91IGRvIG5vdCBuZWVkIHRvIHBlcmZvcm0gY29uY3VycmVudCBJUEMgYWNyb3NzIGRpZmZlcmVudCBhcHBsaWNhdGlvbnMsIHlvdSBzaG91bGQgY3JlYXRlIHlvdXIgaW50ZXJmYWNlIGJ5IGltcGxlbWVudGluZyBhIEJpbmRlciBvciwgaWYgeW91IHdhbnQgdG8gcGVyZm9ybSBJUEMsIGJ1dCBkbyBub3QgbmVlZCB0byBoYW5kbGUgbXVsdGl0aHJlYWRpbmcsIGltcGxlbWVudCB5b3VyIGludGVyZmFjZSB1c2luZyBhIE1lc3Nlbmdlci4gUmVnYXJkbGVzcywgYmUgc3VyZSB0aGF0IHlvdSB1bmRlcnN0YW5kIEJvdW5kIFNlcnZpY2VzIGJlZm9yZSBpbXBsZW1lbnRpbmcgYW4gQUlETC48L3A+DQoJPHA+QmVmb3JlIHlvdSBiZWdpbiBkZXNpZ25pbmcgeW91ciBBSURMIGludGVyZmFjZSwgYmUgYXdhcmUgdGhhdCBjYWxscyB0byBhbiBBSURMIGludGVyZmFjZSBhcmUgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzLiBZb3Ugc2hvdWxkIG5vdCBtYWtlIGFzc3VtcHRpb25zIGFib3V0IHRoZSB0aHJlYWQgaW4gd2hpY2ggdGhlIGNhbGwgb2NjdXJzLiBXaGF0IGhhcHBlbnMgaXMgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBjYWxsIGlzIGZyb20gYSB0aHJlYWQgaW4gdGhlIGxvY2FsIHByb2Nlc3Mgb3IgYSByZW1vdGUgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5OjwvcD4NCgk8cD5DYWxscyBtYWRlIGZyb20gdGhlIGxvY2FsIHByb2Nlc3MgYXJlIGV4ZWN1dGVkIGluIHRoZSBzYW1lIHRocmVhZCB0aGF0IGlzIG1ha2luZyB0aGUgY2FsbC4gSWYgdGhpcyBpcyB5b3VyIG1haW4gVUkgdGhyZWFkLCB0aGF0IHRocmVhZCBjb250aW51ZXMgdG8gZXhlY3V0ZSBpbiB0aGUgQUlETCBpbnRlcmZhY2UuIElmIGl0IGlzIGFub3RoZXIgdGhyZWFkLCB0aGF0IGlzIHRoZSBvbmUgdGhhdCBleGVjdXRlcyB5b3VyIGNvZGUgaW4gdGhlIHNlcnZpY2UuIFRodXMsIGlmIG9ubHkgbG9jYWwgdGhyZWFkcyBhcmUgYWNjZXNzaW5nIHRoZSBzZXJ2aWNlLCB5b3UgY2FuIGNvbXBsZXRlbHkgY29udHJvbCB3aGljaCB0aHJlYWRzIGFyZSBleGVjdXRpbmcgaW4gaXQgKGJ1dCBpZiB0aGF0IGlzIHRoZSBjYXNlLCB0aGVuIHlvdSBzaG91bGRuJnJzcXVvO3QgYmUgdXNpbmcgQUlETCBhdCBhbGwsIGJ1dCBzaG91bGQgaW5zdGVhZCBjcmVhdGUgdGhlIGludGVyZmFjZSBieSBpbXBsZW1lbnRpbmcgYSBCaW5kZXIpLjwvcD4NCgk8cD5UaGUgb25ld2F5IGtleXdvcmQgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHJlbW90ZSBjYWxscy4gV2hlbiB1c2VkLCBhIHJlbW90ZSBjYWxsIGRvZXMgbm90IGJsb2NrOyBpdCBzaW1wbHkgc2VuZHMgdGhlIHRyYW5zYWN0aW9uIGRhdGEgYW5kIGltbWVkaWF0ZWx5IHJldHVybnMuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJmYWNlIGV2ZW50dWFsbHkgcmVjZWl2ZXMgdGhpcyBhcyBhIHJlZ3VsYXIgY2FsbCBmcm9tIHRoZSBCaW5kZXIgdGhyZWFkIHBvb2wgYXMgYSBub3JtYWwgcmVtb3RlIGNhbGwuIElmIG9uZXdheSBpcyB1c2VkIHdpdGggYSBsb2NhbCBjYWxsLCB0aGVyZSBpcyBubyBpbXBhY3QgYW5kIHRoZSBjYWxsIGlzIHN0aWxsIHN5bmNocm9ub3VzLjwvcD4NCjwvYmxvY2txdW90ZT4NCjxwPrb+o6lhaWRstcTKudPDPGJyIC8+DQo8aW1nIGFsdD0="這裡寫圖片描述" src="/uploadfile/Collfiles/20160421/20160421091338183.png" title="\" />
假設我們有這樣的需求【其它部門有現有的庫,我們拿來直接用】
service端根據client端輸入的兩個數,相加計算和然後返回
1)在eclipse和AndroidStudio中自動創建方式不一樣,可自行度娘。
定義的aidl文件如下:
2)創建了aidl後。實現:基於服務,實現aidl的接口,返回的是binder信使,當activity綁定服務之後,即可得到實現aidl的信使,然後調用服務端的方法。
3)服務端完成以上任務後,接下來就是client需要做的事情了。aidl語言實現ipc通信,那麼client和server需要使用同一套aidl規則。那麼直接將服務端的aidl接口文件拿到client端就行了。
綁定服務
綁定的時候需要拿到連接的回掉:
在回掉中我們已經通過服務端的信使Binder對象,拿到了aidl的service對象,直接調用方法即可。。。
記住:在onDestory()方法中需要解綁。支持數據類型:
不支持short類型:在自定義類型時候,實現Parcelable時候,沒有writeshort方法的,在d操作系統內部也沒有這個方法。一定要區別於Binder和Messager的使用,基於操作系統的操作,耗資源耗時間,只在ipc多線程情況下使用。
今天我們來利用Android自定義控件實現一個比較有趣的效果:滑動水波紋。先來看看最終效果圖: 圖一 效果還是很
由於本人喜愛Git,那就介紹Git,,如何和在GitHub和Oschina拉取和提交項目,並且你會學會如何解決沖突問題!!博主還是那個圖片控!!准備工作git下載地址:G
本文力求用最簡單的方式實現這樣的一個效果,並輔以詳細的文字說明。老規矩,先看圖:一個點餐界面,6種菜品,意味著6個按鈕,點擊‘開始點餐’ 幕布上升
1.FrameLayout 幀布局,效果為多個圖層依次疊加,比如說畫一幅畫,在FrameLayout中先添加背景imageView,再添加其他的事物imageView即可