闡述Android開發過程中的難題

來源:互聯網
上載者:User

Android開發採用了軟體堆層(software stack,又名軟體疊層)的架構,主要分為三部分,下面就對這三個部分做一下自己的見解和看法,希望能夠給大家帶來相關的協助。

在J2EE中,採用RMI的方式, 可以通過序列化傳遞對象. 在Android中, 則採用AIDL的方式. 理論上AIDL可以傳遞Bundle,實際上做起來卻比較麻煩.AIDL(AndRoid介面描述語言)是一種借口描述語言; 編譯器可以通過aidl檔案產生一段代碼,通過預先定義的介面達到兩個進程內部通訊進程的目的。

如果需要在一個Activity中, 訪問另一個Service中的某個對象, 需要先將對象轉化成AIDL可識別的參數(可能是多個參數), 然後使用AIDL來傳遞這些參數, 在訊息的接收端, 使用這些參數組裝成自己需要的對象.

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

在Android開發中, 每個應用程式都可以有自己的進程. 在寫UI應用的時候, 經常要用到Service. 在不同的進程中, 怎樣傳遞對象呢? 顯然, Java中不允許跨進程記憶體共用. 因此傳遞對象, 只能把對象拆分成作業系統能理解的簡單形式, 以達到跨界對象訪問的目的。

在J2EE中,採用RMI的方式, 可以通過序列化傳遞對象. 在Android開發中, 則採用AIDL的方式. 理論上AIDL可以傳遞Bundle,實際上做起來卻比較麻煩。AIDL(AndRoid介面描述語言)是一種借口描述語言; 編譯器可以通過aidl檔案產生一段代碼,通過預先定義的介面達到兩個進程內部通訊進程的目的。

如果需要在一個Activity中, 訪問另一個Service中的某個對象, 需要先將對象轉化成AIDL可識別的參數(可能是多個參數), 然後使用AIDL來傳遞這些參數, 在訊息的接收端, 使用這些參數組裝成自己需要的對象.

AIDL的IPC的機制和COM或CORBA類似, 是基於介面的,但它是輕量級的。它使用代理類在用戶端和實現層間傳遞值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相關類.; 2. 調用aidl產生的class。匿名性質的運行時綁定使得理解Android如何解析一個隱式Intent到一個特定的應用程式組件變得重要。

和你之前看到的一樣,當使用startActivity時,隱式Intent解析到一個單一的Activity。如果存在多個Activity都有能力在特定的資料上執行給定的動作的話,Android會從這些中選擇最好的進行啟動。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.