2015年度總結--android開發

jopen 8年前發布 | 20K 次閱讀 安卓開發

雖然農歷年才是新的一年的開始,不過關于中西文化的問題這里就不討論了,所謂“男女平權,公說公有理,婆說婆有理;陰陽合歷,你過你的年。”

看到很多朋友在發年度總結,于是想想這一年我都在干什么呢,也總結一下吧

如果要說我今年所做的事究竟怎樣,都有什么價值,有什么意義,實際上我無法得出結論,從公司的角度來看,我認為我所做的項目并不樂觀,但好壞沒有絕對,可能一段時間以后又回是另一種情況吧。

因此我還是說技術問題吧

今年主要在做一個安卓程序,先是對地圖sdk的使用,由于要有離線導航功能,一開始使用高德地圖,但由于高德的sdk中沒有離線導航的功能,因此又換成百度地圖,百度的sdk中是有離線導航的(離線地圖和離線導航是分開的,離線地圖高德和百度sdk都是支持的),不過需要申請,不過后來也沒申請到,估計這個功能是提供給車載導航廠商的,估計是要收費的,可能還很貴,后來通過調起百度導航App的方式勉強滿足要求,這樣是需要安裝"百度導航"的,離線資源也要再百度導航里下載。

處理完地圖和導航的功能,然后就開始做類似于移動辦公OA之類的功能,主要是編寫界面以及和服務器端進行交互。

在編寫界面的時候比較麻煩的就是處理安卓中的list,由于考慮性能的原因,list中顯示的子view是要被回收反復利用的,這就導致了很多問題。比如說在list中放了一個選擇框checkbox,選擇以后然后滾動list,讓選中的那個checkbox滾動到屏幕以外,如果不做處理,滾動回來以后checkbox的選中狀態就沒有了,還可能會出現在滾動的時候下面出現的checkbox默認是選中狀態。

另外還有圖片的加載也會出現類似的情況,圖片會亂位,等等,這些都是需要注意的地方,本人在應用市場下載過一個已經發布的程序,就有上面所出現的那種情況。

關于與服務端的交互,也是有很多可以優化的地方,在做項目的過程中實現的方式也在做一些改進,項目中是使用volley來處理網絡請求,使用volley可以簡化很多操作。在發送網絡請求時,需要加入等待的狀態以及處理記載失敗等情況,一開始是將代碼放到另外一個類中,但由于沒有使用接口在回調時就比較麻煩(java中函數不能作為參數傳遞),后來就直接把請求放到activity或者dialog中了,這樣代碼看起來有點亂,不過也方便了很多。

再后來寫了一個VolleyHelp和一個接口VolleyHandle,在需要發起網絡請求的地方實現VolleyHandle接口,就像onClick事件那樣,接口中實現的方法,主要就是請求開始前的操作,有數據返回,已經請求失敗的方法,這樣使用起來就方便了很多,主要關心的就是那幾個函數,不需要拷貝很多Volley有關的東西過來。

雖然這樣已經很方便使用了,但還是有很多可以改進的地方。比如這里并沒有考慮緩存的情況,我們希望的情況是列表中的數據只要加載了一次,再次刷新如果沒有更新的話就不重復加載了,不過這樣比較麻煩的地方就是怎么判斷數據有沒有更新,數據是放在服務器端的因此需要發送請求進行判斷,實際上服務器端并不好判斷,一般數據是存放在數據庫中,要判斷是要再查詢一次數據庫的。因此還需要對返回的數據進行md5,然后客戶端傳遞md5值過來進行判斷。當然可能還有更好的方式,目前我只能想到這樣的做法。

當然一般情況下,不考慮刷新后對數據是否更新進行判讀,只要刷新了就重新加載數據,實際上這樣也是可以的,因此一般加載列表都是要分頁的,也不會有太多的數據。

緩存的另外一種情況就是,在沒有網絡的情況下,顯示最后一次加載的數據,這樣不至于,在沒有網絡的情況下打開軟件,軟件中什么也沒有。

考慮緩存的情況,就需要對網絡請求進行進一步的處理,我想以后的網絡請求sdk可能會加入緩存機制吧,或許已經有這樣的sdk了而我沒有發現。目前的項目中并沒有考慮緩存,以后要改進的話再做處理吧。

除了ui和網絡請求以外,因為權限的問題,要設置apn,因此我去研究了一下非常牛B的代碼注入技術,因為涉及到底層因此非常的牛B,不過由于兼容性的以及需要root權限,因此在項目中并沒有用這種技術,關于代碼注入的問題,我在”穿越之旅“的幾篇文中,已經寫過了,這里就不做介紹了。

另外跨平臺也是一直關注的,今年非死book開源了react native,包括android和ios,因此有空的時候又跑去折騰了一下react native,也寫了幾篇環境搭建的文章,不過也只是運行了幾個demo,并沒有在實際開發中使用,因為沒有太多時間填坑,還是感覺用原生更可靠。

去年(2014)做的一個app,由于大量的使用圖片,導致內存溢出,為此糾結了一段時間,今年似乎看到了可以解決內存不足的方案,同樣是非死book開源的圖片緩存框架fresco,fresco使用ndk,有一級native緩存似乎可以解決安卓程序內存不足的問題。不過沒有時間做過多的研究。

除了關于安卓還有javaweb的一些內容,內容較多,就放到下一篇吧,有時間再寫,雖然今天已經是1號了,但農歷新年還沒開始,因此依然可以稱之為年度總結,哈哈。

更多內容請關注我的微信公眾號:zhaojieTec

來自: http://www.cnblogs.com/zhaojietec/p/5093209.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!