看我是如何快速學習android開發的(一)


        因為項目需要,8月中旬開始決定做安卓的程序,所以馬上就開始學習安卓方面的開發知識,把最近的學習實踐經歷和大家分享分享。不要一開始就下載一大堆資料,視頻,然后就不知道做什么了,要給自己定個目標,我要做什么?我怎么達到目標? 

我不懂java,但是懂C#和C++,所以我沒主張去單獨學習java語言,如果你是個最最初的新手,沒啥語言基礎,那你必須先看看java語言,不要很詳細看,因為學習Android中,你也是在學習java。 

        1. 明確目標

沒有目標的學習,會感覺到后面沒什么成果,在1年前,我也打算學習android開發的,但是目的就是學習,到網上去下載很多學習的視頻,然后把開發環境搭建起來,能把Helloworld運行起來,能打些log,Activity之間也能互相切換了,但是后面也就不了了之了,因為不知道學了要干什么。依葫蘆畫瓢的做了幾個例子,因為里面的問題都是已經解決的,所以也沒能深入的系統學習。

 這次因為產品的需要,要做Android版本,要做的東西一開始就已經設計好了,見搖搖2選1安卓版本,剛開始也不知道里面有些什么技術難度,但是要做的目標已經明確了,而且也沒有現成的,碰到問題就查資料,慢慢地解決,這樣有的放矢,學習的效果非常好。既有現成的技術可以使用,又有些技術,需要查比較多的資料,這樣記憶就比較深刻,所掌握的知識也比較系統。

接下來的一系列文章,我會把在開發搖搖2選1中遇到的問題,給大家詳細講講,程序雖然小,但是五臟俱全,做Demo和做產品的要求完全不是一個級別,如果Android大牛感覺知識講的比較淺,那可以繞道,畢竟我是從一個完全的新手開始的。

 

        2. 了解安卓開發中比較困難的地方

學習一個新平台,就要知道此平台開發要面臨的困難有哪些,不要做到最后,這些問題沒有考慮,那就比較糟糕了。在網上搜索了下,安卓開發困難總結如何:

1)安卓系統版本比較多,各版本之間的兼容性是個問題,此為系統碎片。

2)安卓設備千變萬化,設備難以統一,每個產品都成為獨立,分散的Android碎片。

3)分辨率五花八門。一個產品,可能需要多個界面排版,人工消耗比較大。

 

看到這張圖,有沒有頭疼的感覺? 

總結成一句話:Android的碎片化真是要來開發者的命。 

 

        3. 搭建開發環境

"巧婦難為無米之炊",開發環境肯定是第一件要做的事情,這類的文章已經很多了,我也不多說了,多說也就比較無聊了。感謝吳秦,也是博客園里的一員,他寫的很詳細了,見這里

 

        4. 查看網友總結的一些經驗。

             不是什么都查看,開發中遇到什么問題,就去查看什么問題,這樣你查到的知識,馬上就能深入的實踐,這樣知識就鞏固了。

     1)首先當然要看Android的開發文檔,里面其實大部分的知識都有了,還有就是SDK自帶的Samples。

     2)博客園里搜索“Android開發”,會出來一大把,很多網友都是很系統的講解了。

     3)eoe android社區,里面有很多網友上傳了現成的demo代碼,里面很多都是模仿現在流行的產品的界面開發,很是不錯。

 

        5. 掌握調試方法

個人一直認為,調試技巧是開發中最重要的技能,如果調試技能比較差,不知道如何查找問題,那不會是個好的程序員,其技能也不會高到哪里去。 

  Android做下來,感覺調試這塊做的很不錯了,這要感謝Eclipse IDE做的比較不錯,但是Android的界面排版部分,真的不敢恭維,Eclipse時間用長了,占用內存真是大。有哪位高手能否告訴我下,你們界面排版是用什么的?

Android里,如果程序出了問題,有些是一下跟蹤不到的,這時就要用到Log類了,Log類使用很簡單,就不多說了。
  自己一個很有感觸的經驗,如果你真的打算做Android開發,那就買一個設備,這樣能大大提高開發效率,模擬器有時用起來真是麻煩,而且開發的設備不要很好的,只要設備分辨率是主流的,傳感器的支持最好全點就夠了,國產的手機里,華為的還不錯,或者到淘寶上去買個二手的,投資不大。真的買了投資,可能也會增加你學習Android的決心。

       

6. 程序框架

經過10多年的經歷,認識到程序的框架對開發產品真的是起到舉足輕重的作用。一個好的產品,如果有個好的程序框架,那真是事半功倍,可能開始所做的工作會比較多,很難看到令人激動的成果,但是相信我,絕對值得。一開始,我也是比較注重程序界面開發,很快就開發出界面來,而且着實比較激動,因為有東西出來了,但是后面的事情,真是令人發狂,想從頭再來,太遲了,離計划的時間比較近了,時間不允許,只有硬着頭皮往上打補丁,硬着交付第一個版本,第二個版本或者后面的版本,遲早是要重來的。所以在后面帶領團隊開發的時候,在開發前,都是要討論程序框架,留出很大部分時間進行程序框架開發,及在開發中不斷的改進。

剛接觸Android,不知道用什么程序框架,所以查了很多資料,一開始看到一個程序框架,感覺很不錯,所以一開始就使用了下面這個程序框架。

開始這個框架用的蠻爽,簡單介紹一下,主UI線程如果要做一個比較長時間的任務,創建一個任務,發送到任務隊列中去,后台的Service不斷的從任務隊列中去取任務,然后交給線程處理,線程處理完后,通過消息(Message)發送到Handler里處理,然后Handler的handleMessage函數里回調到UI主線程中去。

此框架的缺點是比較麻煩。

1)首先這里有個Observer模式,每個Activity都要實現一個接口,然后注冊到后台服務中去,這樣后台服務才能把處理的結果回調到主線程中。

2) 每個事件都要組成一個任務,發送到任務隊列。

3)后台線程先要取任務,然后處理,然后通過消息切換到主線程,然后又回到到相應的Activity中,中間有個3次判斷當前是什么任務。

4)不能並非,任務只能一個接一個,雖然這個一般不會造成瓶頸。

因為搖搖2選1應用比較簡單,所以后來感覺只要使用線程和Handler,通過消息就能處理,然后就查資料,發現已經有比較多的文章描述了這種方法,只是沒提出這是一個框架,但是對搖搖2選1,我感覺已經足夠了。下面就是主代碼,分布在每個Activity中:

private void TaskThread() 

{

Thread taskThread = new Thread()

{

@Override public void run()

{

//做耗時的任務 

 Message msg = Message.obtain();

msg.what = 1;

uiCallback.sendMessage(msg);

}

};

taskThread .start();

}

private Handler uiCallback = new Handler()

{

@Override public void handleMessage(Message msg)

{

if(msg.what == 1)

{

//在主線程中處理結果 

}

}

};

  夠用就好,至少我現在用着很爽。

 

7. 程序國際化

互聯網讓地球成為一個村,所以一開始也需要了解一下程序是如何做國際化版本的。不要一開始字符串滿天飛,整個程序中都存在hard code,這樣做,遲早是要吃虧的。

 

8.產品升級機制

一個方便的產品升級機制,對產品的成長很重要,android是一個開放平台,在這點上比iOS做的好的多,產品升級很方便。 

 

此文章的目的就是對想學Android開發的人一個指引,因為我也就是這么走過來的,加上自己在軟件開發上的一些經驗,讓新手少走彎路。有計划,有目標的學習,這是最好的方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM