Android的Proxy/Delegate Application架構 (主要介紹外掛程式化開發)

來源:互聯網
上載者:User

標籤:

360技術團隊地址:http://blogs.360.cn/blog/proxydelegate-application/

Android 外掛程式開發,做成動態載入

 

美團Android DEX自動拆包及動態載入簡介

 

實現一些特殊需求,如介面換膚、外掛程式化等,我們希望改變應用的運行環境(surrounding)。例如,我們希望某個應用在運行時,所有Class(包括自訂Application,下面假設它叫MyApplication)都被一個自訂的ClassLoader載入。

要實現這個需求,需要在MyApplication被載入之前,先替換掉API層的預設ClassLoader,否則MyApplication就會被預設ClassLoader載入。但這會產生一個悖論,MyApplication被載入之前,沒有任何應用代碼可以運行,替換ClassLoader無法辦到。Proxy/Delegate Application架構就是用來解決這類問題的。

在Proxy/Delegate Application架構裡,應用一共有兩個Application對象,一個稱為ProxyApplication,另一個稱為DelegateApplication:

(1) ProxyApplication:架構會提供一個ProxyApplication抽象基類(abstract class),使用者需要繼承這個類,並重載其initProxyApplication()方法,在其中改變surrounding,如替換ClassLoader等。

(2) DelegateApplication:即應用原有的Application,應用從getApplicationContext()等方法中取到的都是DelegateApplication。注意DelegateApplication只是一個稱謂,並沒有一個叫DelegateApplication的基類存在。

Android的Proxy/Delegate Application架構 (主要介紹外掛程式化開發)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.