簡體   English   中英

Android應用程序架構 - 基於事件或分層

[英]Android application architecture - event based or layered

我正在構建一個用於托管應用程序的SDK。 該SDK將集成在具有大量用戶的應用程序中。

我們開始使用分層架構構建它 - UI,管理器與模型和網絡層交互。 總共三層。 UI正在通過回調獲取更新。


旁注:我是團隊中的一員,用很多用戶構建了一些Android應用程序,所有這些都使用了相同的分層架構。 這些應用程序擁有活躍的用戶,直到現在還有很好的反饋。


我們有測試版,似乎一切都按預期工作。

一周前,我們的一位團隊成員前來表示他認為我們需要將我們的架構更改為基於事件驅動的架構。 我們將在SDK中具有處理所有偵聽器的靜態事件句柄,並且將從其他組件觸發調度。

我認為這有點冒險,我認為在多線程環境中以這種方式處理具有大量依賴性和服務的大型SDK會很困難。 另外,因為我們正在構建SDK,所以我們希望將我們的主類從主機應用程序中隔離出來,我認為這幾乎是不可能的。

我的問題

  1. 您認為正確的方法是什么,分層架構是好的,我們需要堅持下去,或者基於事件是首選的?

  2. 您是否認為適合需要盡可能高效的SDK的解決方案?

  3. 你認為這對多線程環境來說是一個很好的解決方案嗎?

感謝任何反饋,謝謝。

我讀過的一些文章:

架構,Android的最干凈的方式

建築圖案-移動應用開發

事件驅動編程換機器人

Android本身基於基於事件的模型。 Android應用程序使用一個名為looper線程的特殊線程,一次從一個事件隊列中選擇事件,並通過執行其處理程序順序處理它們。 可能存在使用傳統同步操作在彼此和looper線程之間通信的附加常規線程。 looper線程的主要作用是不斷檢查其事件隊列 ,一次選擇並處理一個事件。

據我所知,Android使用基於事件的模型的主要動機是它必須處理很多事件 (觸摸屏,點擊,傳感器,網絡,內部和外部事件等)和基於事件的模型選擇有意義。

如果您主要關注的是並發性和多任務處理,那么事件驅動反應模型恰好是多線程(或一般的並發)的更好選擇。 但分層結構也不錯,實際上我覺得它更好。

在一天結束時,這取決於工作的性質。 如果您認為您的SDK正在證明什么,類似於Android的工作(處理大型事件),那么去基於事件的模型,否則分層結構更好。

如果並發 (多線程)是您的主要問題,並且您想要利用多核架構並且您的作業是CPU密集型的,那么您應該看到其他架構。

雖然前段時間我經歷了Android的性能提示,但我遇到了以下建議:

始終測量

在開始優化之前,請確保您遇到需要解決的問題 確保您可以准確衡量現有的績效,否則您將無法衡量您嘗試的替代方案的好處。

簡而言之

如果沒有損壞,請不要修理它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM