1、踏上Android學習之路
在大三的上學期我是有自學過c#的,現在想來估計是連門都沒入。我是一個辣雞二本學校的學生,周圍有在我看來還算牛x的人,當然大部分光從技術的角度來說,都不咋滴。剛開始學c#,寫了一個簡單的俄羅斯方塊之后就不知道該干啥了,又在假期里跟著網上找的培訓視頻寫了個什么家庭理財,就是本地連個sqlserver數據庫做一些增刪查改,然后拖拖控件。然后之后就不知道該干啥了……是的,我不知道之后我該去干啥了……在大三下學期學校有一門和Android開發有關的課,其實我身邊也有幾個學習Android的同學,于是便想借這個機會了解下Android,也是由此,我踏上了Android開發的學習之路。不過學校的這門課還是比較水的……我買了第一行代碼看,老師看到了還說這本書講的稍微深了一點……
剛開始的時候是從Java開始看的,同學推薦我看畢向東的Java教學視頻,我跟著看了大概半個多月,耐不住寂寞開始弄起了Android。當然了,在淘寶上花了30多塊買了黑馬培訓視頻看的。想起當時跟著視頻一行一行敲代碼……雖然進度非常慢,但是對于沒接觸過的人來說,視頻還是用來入門的不二之選。還記得當時看視頻有一個覺得非常難,就是簡單的新聞那個。當時對于我來說陌生的東西非常多,Json,ListView,HttpUrlConnection,Adapter……其實有的時候** 現階段感覺很難的東西,可能只是以后繼續學習的基礎 **。
之后有一天看到同學桌上有本《Android開發藝術探索》,翻了下目錄,覺得這書好厲害,講了很多原理一類的東西,于是入了一本,從此踏入Android不歸路。在看了一段時間的視頻之后,嫌看視頻太慢,之后自己開始嘗試自己寫一個能展示新聞的簡單demo。在完善了基本功能之后,嘗試將自己平時所看到的緩存之類的加入到其中,于是有了News。當然了News中的一部分參考了SimpleNews,News倉庫時間并不對,因為包名大小寫的問題我曾經刪過一次原倉庫。
2、一份實習
學校7月份實訓,也就是把我們丟到了一個地方在一個月內接觸js、mysql、spring、html之類的東西。最后感覺沒學到什么東西,因為時間的確有點短。在這一個月之內我嘗試投過幾家的實習,不過除了培訓其他的公司都沒有反饋,最后一家剛起步只有兩個IOS的初創公司看了我的簡歷并給我打了電話,當時感覺真是抓到了救命稻草。我去了之后,就是兩個IOS加上我一個Android,是的沒有搞后臺的,第一個項目是老板之前外包做的一個項目。兩年之前的代碼,一個兩年沒有維護過的代碼,沒有任何文檔說明,因為不是一個人寫的,代碼還有不同的字符編碼,總有一些注釋是亂碼。當然了,我覺得最最最最最關鍵的還是:
- 我菜
- 沒搞服務器代碼的大兄弟
那個項目用的是httpclient,以前的項目感覺很多用的都是這個,而且我也看到過用async-http的項目。該咋說呢,在我看書學Android的時候,httpclient就已經從源碼里刪除了,所以我一直沒怎么關注過。而且當時是很菜的,光看api都能把我看的慌的不行了。
當然了,列舉了這么多困難,還有一些沒列舉的,主要還是因為:
- 我菜
其實當時老板也沒給我分配很多的任務,就讓我找接口然后寫個文檔給IOS的同事用,是的沒看服務器代碼的大兄弟,只能讓我去搞了。我在客戶端里找各種接口,我發現他所有的請求代碼都寫在Application里,通過Handler將各種請求結果傳回到原來的Activity、Fragment中,感覺還是挺神奇的。雖然了解過一點Android消息機制,但是并沒有像這樣實踐過。不過將請求寫在Application里這種做法我并不認同,各位也不要效仿,
在這期間,我認識到我自己有很多的不足,一點問題都能讓我折騰很久,可能一個新司機和一個不那么厲害的老司機之間的區別就是效率吧。所以我每天有空都會刷《Android開發藝術探索》,到后面有些東西看不懂了,我買了《Android群英傳》不過感覺群英傳相比于開發藝術探索,可能你看群英傳剛覺得有點意思的時候,就戛然而止了。《開發藝術探索》則不是,你會看到懷疑人生(夸張的說法)。
3、自己從零搭建的第一個項目
是的,沒錯,我的第一份實習工作,公司的項目是我從零開始搭建起來的。為什么公司的項目能讓我搭建呢?很簡單,剛開始做這個項目的時候,Android這邊只有我這一個人。那么我選用了哪些第三方來構建這個項目呢?
- okhttp-utils
這個是鴻洋大神寫的okhttputils,原生OkhttpClient用起來還是比較麻煩的,而鴻洋大神寫的這個從調用方式上來看還是非常簡潔易用的。當然在用的過程中也碰到過一些坑:
表單請求在okhttputils內部是采用Map封裝的,有的需要你傳數組的時候,鍵就是重復的,只能添加一個參數進去,這點算是比較坑的,不過有辦法解決,答案我寫在了OkhttpUtils的一個issue里了:參數重名怎么辦
還有一些小坑我印象不是很深了,略過~
- RxJava && RxAndroid && Lambda
我這個。。強行用了一波,不過現在還是感覺鏈式調用很爽。。。而且配合lambda寫的代碼看著也比較簡潔。可能RxJava結合Retrofit更加簡潔,但是我當時要看的東西的確挺多的,真的沒空再去了解Retrofit了,而且對于當時我的來說再去學習Retrofit,成本比較高,權衡之下就選擇了okhttp-utils。
- MVP
在使用MVP的過程中思考了一下內存泄漏的問題,最后也得出了一個簡單的解決方案,思考過程寫在了這篇文中:Android內存泄漏淺析,其實說是思考過程,就是各種查資料,然后結合以前大學里學到的一些東西結合理解一下。不過我現在感覺我用的MVP可能只是最基本的使用方式,寫的類接口很多,雖然最終考慮抽取了BaseModel、BaseView和BaseActivity稍微簡化了一些,但是整個實現的過程中還是感覺有點累,寫的東西真多。不過說架構清晰,這點倒是可以承認,畢竟Model和View分離,互不感知。看google的mvp項目之后我一直有點懷疑我寫的是不是mvp。。這個留待我以后在思考。
- 百分比布局
沒啥好說的,不過后來才知道鴻洋大神有個AutoLayout更好使。。
- 黃油刀
并不是用反射實現,不用擔心性能問題,關鍵是有插件可以一鍵生成。。。不過關于是不是要用這個好像還是有些爭議的,各位可以自己權衡。
還有一些東西印象并不是很深,如果我覺得有補充的必要我會加上來的。
上面那些東西我也并不是一下子就都會用的,都是慢慢學習,自己在網上一點一點的找資料啃下來的。中間的困難現在都已不記得了,在從零搭建好了那個項目的框架之后,閑暇之余我開始復習Java,畢竟之前看視頻看的Java有些基礎不是很牢靠。于是我開始閱讀《Java編程思想》,并開了個Java回爐系列來記錄自己回爐Java的過程,不過現在我覺得我的一些理解可能是片面的,不正確的,但是這并不影響我繼續學習不是么。暫時的片面和不正確并不可怕,不斷的深入學習就可以了,我是這么想的。期間,我嘗試過自定義View不過說實話,這個東西只能作為一個學習的資料,也和小伙伴們討論過http協議,感覺到成長之路也是自己一步一步踏出來的。過去的一年都回顧的差不多了,再用幾個詞簡單的概括下:
- 有進步
- 入了門
- 很懵逼
展望2017
2017,大學的最后一個學期,也是將要正式踏入社會的一年了,希望自己在最后的一個學期里好好磨練自己,也能找到一份滿意的工作。雖然環境不如以前了,但是還是得努力加油~
不努力一下,都不知道什么是絕望。
條條大路通羅馬,有的人就生在羅馬。
最后的毒雞湯是不是猝不及防,哈哈哈哈~
最后呢,自己還有非常多的不足,仍需努力提升自己~