2011-07-14 22 views
1

接收自定義邏輯Android的活動我想寫操縱相機數據的應用程序。我想使這個框架具有可擴展性,以便其他人可以通過使用適當簽名實現單一方法來編寫不同的操作邏輯。我想象的是,用戶安裝我的應用程序加上一些其他人的插件。當我的應用程序啓動時,它會查詢操作邏輯的實現並加載它們。可以從插件在運行時

因爲我想要實時處理相機數據,所以在應用程序之間傳遞圖像數據並不意味着可行。相反,我想請求將對象發送回我的活動,以便在相機預覽偵聽器中設置。

這是可能的,或者是有沒有更好的辦法?

回答

1

如果你這樣做是對靜態圖像(拍攝圖像,選擇與變換/過濾器​​,顯示結果),那麼你可以與現有的IPC機制中的任何一個(AIDL,網絡流等)做到這一點。

但是,對於實時響應,您將無法將一個全新的類打包並分別從您的APK加載到您的APK的類加載器中進行分發並使用:類加載限制並不真正允許共享類數據APK之間。我已經看到有人嘗試使用DexClassLoader來構建自己的類加載層次結構,但據我所知,沒有人(公開)成功地在非根用戶硬件上做一些有價值的事情。

更新:這裏有越來越DexClassLoader工作的一些細節:http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

+0

謝謝,這是非常有幫助的。就這樣,我明白,如何使用Parcelable傳遞對象數據來處理這個問題?在我看來,儘管Parcelable旨在傳遞數據,但它包含兩個單獨的包,用於共享關於類的方法功能的知識嗎? – Chinasaur

+0

Parcelable明確地依賴於任一普通類型(字符串,整數,包)或在再水化該類實例:它在語義上是相同的類中的方法,但是這將與調用返回的Class實例{實例} .getClass()在發送在接收端不會和{instance} .getClass()完全相同,因此它們不會是完全相同的類。 – Femi

+0

這很有道理;謝謝。 DexClassLoader看起來也值得一試。 – Chinasaur

相關問題