標籤:
我做過兩三個android用戶端應用的整體設計和部分的編碼,這裡僅僅談一下設計方面的故事(此乃原創2015:11:02)。
做用戶端設計,首先要考慮應用所在的環境,包括三方面:1 要設計的apk是在一個低記憶體,低運行速率,多應用共同運行(現在很多應用都在後台一直存活,不死鳥)的環境中;2 要設計的apk需要調用系統其它的資料或功能介面;3 apk置身於整體手機的運行環境中,必然手機的各種狀態的變化,會對apk的運行造成影響,例如開網斷網,亮屏滅屏等。
從1來考慮,必須要在設計之初,從資料流考慮apk運行時記憶體中所持有的資料量要小,不用的資料盡量不要載入到記憶體,用過的資料盡量釋放。因為資料如果一直佔據記憶體,會產生兩個問題:一個是導致程式運行減慢,二資料的一致性會受到挑戰。這裡需要特別說明的是,有些buger認為資料一直佔據記憶體,會使得存取路徑減少,從而速度提高,但是通過親身體驗,從資料庫裡面載入資料和記憶體中載入少量資料,感覺不到差異。但是大量資料佔據記憶體,就會使得本身的記憶體緊張,運行就會卡卡,而且還需要花線程維護資料庫,記憶體,介面的資料一致。因此我認為不利因素大於有利因素。
從2來考慮,設計的apk可能因為業務需要,調用手機中其他共用的資料或者功能介面,例如連絡人資料,簡訊資料,行事曆資料,或者錄影功能,拍照功能,打電話功能等。需要在設計之初路羅列出這些介面,最好對這些介面進行正確性測試,保證功能能夠滿足要求。理論上講,這些屬於標準介面,應該不存在問題,但是各個廠商的手機不一定能夠完全保證。 此外某些特殊的硬體器件各個供應商的介面可能不一樣。
從3來考慮,apk在運行時,可能會受到手機狀態的改變,在接收到這些改變時,需要在業務層級做好相應的對應策略。例如在開網和斷網時,和伺服器的互動應該怎麼處理等。在apk被切換到後台時的處理等等。這些需要提前在業務層級做好準備,避免在後來處理過程中出現二意。
綜上所述,在設計之前,需要考慮的環境因素,越是考慮充分,設計時越是容易,不要把問題遺留到後期。
Android 用戶端設計之環境考慮