天天看點

Android的Aidl安裝方法

AIDL(AndRoid 接口描述語言)是一種借口描述語言; 編譯器可以通過aidl檔案生成一段代碼,通過預先定義的接口達到兩個程序内部通信程序的目的. 如果需要在一個Activity中, 通路另一個Service中的某個對象, 需要先将對象轉化成AIDL可識别的參數(可能是多個參數), 然後使用AIDL來傳遞這些參數, 在消息的接收端, 使用這些參數組裝成自己需要的對象. 

AIDL的IPC的機制和COM或CORBA類似, 是基于接口的,但它是輕量級的。它使用代理類在用戶端和實作層間傳遞值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相關類.; 2. 調用aidl産生的class. 

我通過學習最基本方法寫了一個小類。

<a target="_blank" href="http://blog.51cto.com/attachment/201103/100950147.jpg"></a>

<a href="http://blog.51cto.com/llb988/509421#">?</a>

<code>package</code> <code>com.smart.aidl;</code>

<code>import</code> <code>android.app.Service;</code>

<code>import</code> <code>android.content.Intent;</code>

<code>import</code> <code>android.os.IBinder;</code>

<code>import</code> <code>android.os.RemoteException;</code>

<code>public</code> <code>class</code> <code>SmartService </code><code>extends</code> <code>Service {</code>

<code>    </code><code>public</code> <code>class</code> <code>MyServiceImpl </code><code>extends</code> <code>AidlService.Stub {</code>

<code>        </code><code>@Override</code>

<code>        </code><code>public</code> <code>String getValue() </code><code>throws</code> <code>RemoteException {</code>

<code>            </code><code>// TODO Auto-generated method stub</code>

<code>            </code><code>return</code> <code>"Smart like Android!"</code><code>;</code>

<code>        </code><code>}</code>

<code>    </code><code>}</code>

<code>    </code><code>@Override</code>

<code>    </code><code>public</code> <code>IBinder onBind(Intent arg0) {</code>

<code>        </code><code>return</code> <code>new</code> <code>MyServiceImpl();</code>

<code>}</code>

<code>import</code> <code>android.app.Activity;</code>

<code>import</code> <code>android.os.Bundle;</code>

<code>public</code> <code>class</code> <code>Main </code><code>extends</code> <code>Activity {</code>

<code>    </code><code>/** Called when the activity is first created. */</code>

<code>    </code><code>public</code> <code>void</code> <code>onCreate(Bundle savedInstanceState) {</code>

<code>        </code><code>super</code><code>.onCreate(savedInstanceState);</code>

<code>        </code><code>setContentView(R.layout.main);</code>

<code>interface</code> <code>AidlService</code>

<code>{</code>

<code>    </code><code>String getValue();</code>

<code></code>

本文轉自 llb988 51CTO部落格,原文連結:http://blog.51cto.com/llb988/509421,如需轉載請自行聯系原作者

繼續閱讀