安卓開發(fā)心得5篇最新實例
android開發(fā)是指android平臺上應(yīng)用的制作,Android早期由“Android之父”之稱的Andy Rubin創(chuàng)辦。下面給大家?guī)硪恍╆P(guān)于安卓開發(fā)心得,希望對大家有所幫助。
安卓開發(fā)心得1
時間飛快,轉(zhuǎn)眼畢設(shè)實訓(xùn)已經(jīng)結(jié)束,我們也完成了所選的項目任務(wù)。從實訓(xùn)開始到現(xiàn)在,經(jīng)歷了三個多月的時間,在這段時間里,我們著手安卓應(yīng)用程序開發(fā),剛開始接觸Android感覺到它很有意思,在界面開發(fā)上和web也可以形成了相通的架構(gòu),更加方便,視覺上也是非常的酷,在前期我通過的大量的Android SDK開發(fā)范例大全中的例子以及Android提供的APIDEMOS進(jìn)行學(xué)習(xí),盡管例子之間的連接比較零散,不過通過這些例子的學(xué)習(xí)我可以學(xué)習(xí)到了很多和以前java上相通的思想。我在為期半個月的實習(xí)中學(xué)到了很多在課堂上根本就學(xué)不到的知識,收益非淺.現(xiàn)在我對這半個月的實習(xí)做一個工作小結(jié)。
1通過半個月的android實習(xí),基本掌握了Android應(yīng)用程序開發(fā)的一般流程。對常用控件基本掌握其用法,對其事件的監(jiān)聽方法也基本掌握。學(xué)習(xí)Android不僅是對前沿開發(fā)技術(shù)的了解,也是對編程知識的一次提升。
2通過學(xué)習(xí)Android的控件、布局、Activity、Service等一系列基礎(chǔ)知識,對整個Android的開發(fā)有了大致的了解。例如: 要的布局(或者控件) ,在學(xué)習(xí)界面中,我發(fā)現(xiàn)Android為我們提供了很好的類似反射機(jī)制,通過Layout文件夾下的配置文件,可以快速的形成界面,在配置文件可以設(shè)置屬性或者樣式都是很快捷方便。對比較特殊的界面也可以通過處理嵌入到指定的界面,同樣你可以通過java代碼直接創(chuàng)建View進(jìn)行添加,不過這種方式比較復(fù)雜。對一些點(diǎn)擊、選中、按鍵等處理的事件,界面之間的 跳轉(zhuǎn)Intent管理,通過Bundle對數(shù)據(jù)在界面之間進(jìn)行傳輸。
4在手機(jī)交互式通信服務(wù)中,學(xué)習(xí)了Android手機(jī)之間進(jìn)行短信發(fā)送、廣播、對廣播的監(jiān)聽、服務(wù)等,在Service類中沒有conte_t,可以通過Handler來每秒反復(fù)運(yùn)行,自動送出系統(tǒng)廣播信息,同時在這里我們也知道可以設(shè)計一個常用的變量類,設(shè)計一個當(dāng)前的CurrentActivity這個變量進(jìn)行控制,進(jìn)行處理?! ≡贏ndroid編程過程中鞏固熟悉了Java的編程。由于Android應(yīng)用程序的開發(fā)離不開Java的支持,所以基礎(chǔ)的Java知識是必須的。Android系統(tǒng)是基于Linu_的手機(jī)操作系統(tǒng)平臺,要深入系統(tǒng)的學(xué)習(xí)Android,不僅僅是有Java和Android應(yīng)用開發(fā),必須要具備Linu_,C/C++高級編程才能深入的涉及Android Framework和Android內(nèi)核開發(fā)。成為Android開發(fā)的高素質(zhì)人才。所以,在后續(xù)對Android的學(xué)習(xí)中可能會看一些較底層的書籍。
由于這次實習(xí)時間較短,對于Android應(yīng)用程序的高級編程講的很少,是這次實習(xí)中的不足。要想開發(fā)一些好的應(yīng)用程序,還需要更多的知識支持。在做實習(xí)最后的項目時,遇到了很多平時沒有遇到或者沒有特別關(guān)注的問題,如常見的Activity忘記注冊,對SD卡存取需要權(quán)限,在寫SQL語句時細(xì)微的錯誤就可能導(dǎo)致程序運(yùn)行錯誤。這些問題只有自己在實際開發(fā)中才能體會到并且解決,并且在解決后可以長時間的記住?! ⊥ㄟ^Android的實習(xí),我們在大四畢業(yè)前,我們又掌握了一項新的前沿的開發(fā)技能,也有了更多的發(fā)展方向,這在以后的找工作的過程中無疑為我們增加了砝碼,也可以成為我們的一項興趣愛好,可以根據(jù)我們自己的需要設(shè)計一些小的程序??傊?,在這次實習(xí)中,我獲得了很多東西,提高了自己的編程技巧和編程方法,并且認(rèn)識了Android應(yīng)用程序的開發(fā),以及加深了對Java的認(rèn)識。
最后,通過實習(xí),我收獲了很多東西,特別是編程方面的,這對即將畢業(yè)的我們來說,這次實習(xí)是一次較為珍貴的充電!
安卓開發(fā)心得2
知不覺中為期三周的實訓(xùn)已經(jīng)接近尾聲。雖然時間很短,不過我確實學(xué)到了一些我覺得有用的東西,并且是平時上課學(xué)不到的東西。三周的實訓(xùn),時間很短,確實很短。原本剛開始,乃至之前聽說有為期三周的實訓(xùn)的時候,都覺得,這樣的實訓(xùn)不過就是走過場罷了,只有三周的時間,能學(xué)到什么東西呢?所以一開始也沒當(dāng)回事。
就這樣,帶著這樣的心態(tài),開始了實訓(xùn)。安卓實訓(xùn)。因為第一天周一上午沒有課,下午,才算是正式開始了三周的實訓(xùn)。一開始聽老師講課的時候,感覺很舒服啊,噼里啪啦一講一堆,不過我就喜歡這樣的,聽著爽啊。平時老師上課的時候都是講一句頓一頓,或者一句話反復(fù)琢磨半天,這樣的話,雖然老師的出發(fā)點(diǎn)是好的,是為了讓學(xué)生更容易理解,但這樣的話,教學(xué)的整體進(jìn)度就下來了。而且就算是一個知識點(diǎn)反復(fù)講,也不見得能就精通了這個東西,或者說對這個有多么理解。反而容易讓學(xué)生產(chǎn)生一種懈怠的情緒。
一、第一件事:說話做事要有真憑實據(jù)
而這樣一開始,老師就給我一種耳目一新的感覺:這老師上課帶勁啊!不過也就僅此而已了。老師花了一下午的時間著重介紹了老師所在的公司,以及我們接下來三周的實訓(xùn)計劃。接下來一周實訓(xùn)之后,這個實訓(xùn)在老師的刻意營造下,盡量模仿公司的氛圍。而讓我感受最受的就是:憑事實說話。就是無論要下什么結(jié)論的時候,都要拿得出能夠說服人的數(shù)據(jù)。
這是我在第一周中感受最深的一件事。也是我學(xué)到的第一件事。說話下結(jié)論要有真憑實據(jù)。
二、第二件事:專業(yè)技術(shù)的不斷學(xué)習(xí)
在這一周中,老師著重講了如何進(jìn)行系統(tǒng)構(gòu)架。因為之前也跟老師做過項目,所以對進(jìn)行系統(tǒng)構(gòu)架的理解要稍微深入些,對其重要性的了解也要多一些。這樣,在老師的講解下,再和我以前的理解相互驗證,感覺就像武功高手,在前輩的點(diǎn)撥下頓悟了一樣。
這就是我學(xué)到的第二件事,是在專業(yè)技能方面的收獲。
三、第三件事:學(xué)會尋找動力
然后在接下來的一周中,這樣的學(xué)習(xí)中老師讓我們每組一個白板,然后把每天的任務(wù)完成情況著實記錄。這樣,不同的組之間要對比;同組,不同的組員之間對比;自己今天和昨天的對比。無形中產(chǎn)生了一種強(qiáng)大的推理,推動我們前進(jìn)。
這是我學(xué)習(xí)到的第三件事:沒有動力,就學(xué)會尋找動力,而比較,是最有效的激勵。
四、第四件事:學(xué)會尊重別人,那樣你也會獲得別人的尊重
在第二周結(jié)束的時候,我們用來結(jié)束實訓(xùn)的一個項目就正式開始了。這個項目的時間很短,三天,如果算上上周末的時間的話,那就是五天,但前一周的時間確實沒有有效的利用起來。那么這樣只好算三天了。在這次項目中,我沒有一個人大包大攬,一個人把項目扛下來。因為之前跟老師做過項目,并且我也是小組負(fù)責(zé)人,雖然作為這個小組負(fù)責(zé)人,我做的很不好,但有這樣的一次經(jīng)歷之后,我知道我哪里做的不好,哪里有問題,雖然不會很全面,但至少有一些努力的方向了。
而這次,我就嘗試著,去真正的發(fā)揮一個團(tuán)隊的作用,而不只是一個人完成項目??梢哉f,這次項目我的目標(biāo)是:以團(tuán)隊的形式去推動項目的進(jìn)展。
我不一個人做的原因有這么幾點(diǎn):首先,一個人做太沒有挑戰(zhàn)性了,為了完成任務(wù)而做項目,沒意思。第二點(diǎn):團(tuán)隊的成員對參與這個項目比較積極。不管怎么說,我的團(tuán)隊小組成員就算基礎(chǔ)很差,但只要是真心的想要學(xué)習(xí)的,想要把項目做好的,那我就不應(yīng)該拒絕他們,因為一個小小的拒絕,可能會對別人的一生產(chǎn)生巨大的影響,而這個影響似乎不是積極的。所以,我覺得我應(yīng)該盡我所能去幫助我的小組成員。第三點(diǎn):我想鍛煉一下,作為一個小組負(fù)責(zé)人,我的職責(zé)是什么。我應(yīng)該怎么做才能充分發(fā)揮小組成員的能力。我甚至自己都沒有參與核心代碼的編寫。我既然決定要幫助我的小組成員,那么我就是真心實意的幫助我的小組成員,而不是敷衍,也不想讓我的小組成員覺得我是在敷衍他們,那么我就把真正重要的東西交給我的小組成員,這樣讓我的小組成員感覺到自己受到重視,這樣也可以更好的激勵我的小組成員。
雖然,或許這樣短短的幾天不能夠改變一個人太多。但或許我可以給他們在心里種下一顆積極的種子,或許以后,只要一點(diǎn)點(diǎn)陽光,一點(diǎn)點(diǎn)水分,這顆種子就可以發(fā)芽,破土而出,成長為一個堅定的信念。
這是我學(xué)到的第四件事:真心地為他人著想,尊重他人。這樣才能夠使一個團(tuán)隊產(chǎn)生真正的凝聚力。
安卓開發(fā)心得3
剛開始接觸Android感覺到它很有意思,在界面開發(fā)上和web也可以形成了相通的架構(gòu),更加方便,視覺上也是非常的酷,在前期我通過的大量的Android SDK開發(fā)范例大全中的例子以及Android提供的APIDEMOS進(jìn)行學(xué)習(xí),盡管例子之間的連接比較零散,不過通過這些例子的學(xué)習(xí)我可以學(xué)習(xí)到了很多和以前java上相通的思想。
我在為期半個月的實習(xí)中學(xué)到了很多在課堂上根本就學(xué)不到的知識,收益非淺.現(xiàn)在我對這半個月的實習(xí)做一個工作小結(jié)。
通過半個月的android實習(xí),基本掌握了Android應(yīng)用程序開發(fā)的一般流程。對常用控件基本掌握其用法,對其事件的監(jiān)聽方法也基本掌握。學(xué)習(xí)Android不僅是對前沿開發(fā)技術(shù)的了解,也是對編程知識的一次提升。通過學(xué)習(xí)Android的控件、布局、Activity、Service等一系列基礎(chǔ)知識,對整個Android的開發(fā)有了大致的了解。例如:要的布局(或者控件),在學(xué)習(xí)界面中,我發(fā)現(xiàn)Android為我們提供了很好的類似反射機(jī)制,通過Layout文件夾下的配置文件,可以快速的形成界面,在配置文件可以設(shè)置屬性或者樣式都是很快捷方便。對比較特殊的界面也可以通過處理嵌入到指定的界面,同樣你可以通過java代碼直接創(chuàng)建View進(jìn)行添加,不過這種方式比較復(fù)雜。對一些點(diǎn)擊、選中、按鍵等處理的事件,界面之間的跳轉(zhuǎn)Intent管理,通過Bundle對數(shù)據(jù)在界面之間進(jìn)行傳輸。
在手機(jī)交互式通信服務(wù)中,學(xué)習(xí)了Android手機(jī)之間進(jìn)行短信發(fā)送、廣播、對廣播的監(jiān)聽、服務(wù)等,在Service類中沒有conte_t,可以通過Handler來每秒反復(fù)運(yùn)行,自動送出系統(tǒng)廣播信息,同時在這里我們也知道可以設(shè)計一個常用的變量類,設(shè)計一個當(dāng)前的CurrentActivity這個變量進(jìn)行控制,進(jìn)行處理。
在Android編程過程中鞏固熟悉了Java的.編程。由于Android應(yīng)用程序的開發(fā)離不開Java的支持,所以基礎(chǔ)的Java知識是必須的。Android系統(tǒng)是基于Linu_的手機(jī)操作系統(tǒng)平臺,要深入系統(tǒng)的學(xué)習(xí)Android,不僅僅是有Java和Android應(yīng)用開發(fā),必須要具備Linu_,C/C++高級編程才能深入的涉及Android Framework和Android內(nèi)核開發(fā)。成為Android開發(fā)的高素質(zhì)人才。所以,在后續(xù)對Android的學(xué)習(xí)中可能會看一些較底層的書籍。
由于這次實習(xí)時間較短,對于Android應(yīng)用程序的高級編程講的很少,是這次實習(xí)中的不足。要想開發(fā)一些好的應(yīng)用程序,還需要更多的知識支持。在做實習(xí)最后的項目時,遇到了很多平時沒有遇到或者沒有特別關(guān)注的問題,如常見的Activity忘記注冊,對SD卡存取需要權(quán)限,在寫SQL語句時細(xì)微的錯誤就可能導(dǎo)致程序運(yùn)行
錯誤。這些問題只有自己在實際開發(fā)中才能體會到并且解決,并且在解決后可以長時間的記住。
通過Android的實習(xí),我們在大四畢業(yè)前,我們又掌握了一項新的前沿的開發(fā)技能,也有了更多的發(fā)展方向,這在以后的找工作的過程中無疑為我們增加了砝碼,也可以成為我們的一項興趣愛好,可以根據(jù)我們自己的需要設(shè)計一些小的程序??傊?,在這次實習(xí)中,我獲得了很多東西,提高了自己的編程技巧和編程方法,并且認(rèn)識了Android應(yīng)用程序的開發(fā),以及加深了對Java的認(rèn)識。
安卓開發(fā)心得4
從2016年4月到6月主要做的工作是網(wǎng)站的開發(fā),而6月到現(xiàn)在2016年8月初,主要做的工作是Android和IOS兩種App的開發(fā),又以Android為主。
將這段時間的Android開發(fā)心得記錄如下。
1.開發(fā)環(huán)境和參考資料
由于學(xué)會__的時間比較短(2016年7月才學(xué)會),現(xiàn)在在用的mac版AndroidStudio是在國內(nèi)某站上下載的。今年將開發(fā)環(huán)境由windows轉(zhuǎn)為mac了,好在各種IDE都是跨平臺的,遷過來后麻煩不多,Android Studio也貼心地支持Eclipse風(fēng)格快捷鍵,使用技巧方面,《Android群英傳》的第2章「Android開發(fā)工具新接觸」講了些很好的技巧。
同樣因為學(xué)會__比較晚,主力參考資料一直是手頭的幾本書籍:可以當(dāng)詞典用的《瘋狂Android講義》,手把手地帶新手入門的《第一行代碼》,優(yōu)雅細(xì)致地講Android體系結(jié)構(gòu)的《Android開發(fā)精要》,這三本是2015年買的,很喜歡讀,另外《Android群英傳》《Android UI設(shè)計》《打造高質(zhì)量Android應(yīng)用》《App研發(fā)錄》《Android開發(fā)藝術(shù)探索》買來后翻開的次數(shù)較少,感覺對不起它們。這幾本其實也都是好書,以后要多看。
學(xué)會__之后,Android官網(wǎng)也成了好選擇,但不代表書本就沒用了。官方資料的優(yōu)勢是正統(tǒng)和條理清晰,但在「最佳實踐」甚至「黑科技」上還是一線程序員寫的書更接地氣。而當(dāng)想深入理解底層原理、類庫的作用時,官網(wǎng)是好選擇,而不像書本上的知識會讓你有「說得對嗎」「沒翻譯錯吧」「沒過時吧」的擔(dān)憂。官網(wǎng)和書本,應(yīng)當(dāng)優(yōu)勢互補(bǔ)。具體編程中遇到的各種問題,書本上當(dāng)然不能窮盡,官網(wǎng)就更不可能了,這時候Google和StackOverflow就有了巨大作用,當(dāng)然,這也不能解決一切問題,很多時候還是要耐心地慢慢調(diào)試。
2.頁面知識
這方面《Android開發(fā)精要》講得非常好:安卓的四大組件,被以「任務(wù)」的方式組織在一起,「應(yīng)用邊界」和「進(jìn)程邊界」都被打破了。個人感覺,這是學(xué)習(xí)Android編程時極為重要、應(yīng)該最早學(xué)習(xí)到的基礎(chǔ)知識。
四大組件中,Activity最重要,它名為「活動」,視為「頁面」更容易理解。頁面間的關(guān)系,以「?!沟姆绞浇M織,顯示一個新頁面即將新頁面入棧,總顯示棧頂?shù)捻撁?,點(diǎn)擊手機(jī)上的返回鍵,則彈出棧頂頁面,這些跟瀏覽器的「前進(jìn)/后退」按鈕的邏輯是一致的,有些時候需要更復(fù)雜的控制,例如A打開B,B打開C,希望關(guān)閉C時直接返回到A,則應(yīng)在顯示C時將B關(guān)掉,棧內(nèi)元素由ABC變成AC,即可實現(xiàn)目的。
國人用App,習(xí)慣了底部標(biāo)簽欄,但官方只有頂部標(biāo)簽欄,所以只好自己實現(xiàn),Activity中放一個Fragment和一組顯示為標(biāo)簽欄的頁面元素(具體使用的是RadioGroup,也可以使用別的元素,這不重要),實現(xiàn)當(dāng)點(diǎn)擊標(biāo)簽按鈕時,菜單、標(biāo)簽欄、Fragment的樣式和邏輯都符合要求即可。Fragment的生命周期和能力,跟Activity幾乎一模一樣,問題只在于當(dāng)和另外Activity交互時,接到信息的往往是TabActivity(即Fragment所在的Activity),需要把消息從TabActivity轉(zhuǎn)交給Fragment。菜單的控制也是,點(diǎn)擊菜單的消息會到TabActivity手里,要由它轉(zhuǎn)交給具體的Fragment。
Activity和Fragment(下簡稱頁面)中的元素關(guān)系,與html的dom類似,是樹狀的層次,事件也是先由子元素接收,再冒泡到父元素。布局方面,LinearLayout(線性布局)和RelativeLayout(相對布局)最常見,線性布局可以思路清晰地將元素擺在一條直線上,線性布局嵌套,即可先行后列地擺放,類似bootstrap中的row和column,可以嵌套許多層,而RelativeLayout適合用來擺以元素之間的相對位置為核心的頁面,在思路上比LinearLayout要復(fù)雜一點(diǎn),但功能強(qiáng)大,布局層次扁平,頁面效率高。這兩者的關(guān)系有點(diǎn)像html中的布局:各種block和inline元素的使用是常規(guī)武器,大部分時間好用且省心,但個別時候則需要脫離文檔流。
頁面中具體的單個元素,則與html的dom中的元素也非常類似,有寬度、高度、margin、padding、背景色、文本色、字號等「樣式」屬性,因此正如html中可以把樣式寫在html里,也可以寫在css里一樣,Android頁面的樣式也可以拿出來放到style配置文件里,這樣能減少重復(fù),便于維護(hù)。輸入元素中用戶輸入的內(nèi)容,當(dāng)然也能從該元素的屬性中讀出。響應(yīng)事件的元素的響應(yīng)函數(shù)注冊,也是在該元素上直接聲明即可,類似網(wǎng)頁中的__.onClick方式。元素和所屬頁面之間的關(guān)系,在頁面的onCreate方法中使用findView找到該元素,并設(shè)到該頁面的成員變量上。頁面持有它的元素,元素?fù)碛袑傩?、輸入值,并綁定有響?yīng)函數(shù),這在任何有界面的編程中都是一致的。
3.數(shù)據(jù)知識
作為c/s程序,在本地當(dāng)然有保存數(shù)據(jù)的能力,包括了鍵值對保存和數(shù)據(jù)庫保存,這能力連html5后的b/s程序都具有了(5之前只有cookie的方式),Android這些能力的代碼都很簡單,不多說。
與服務(wù)器的交流,rest的交流方式是事實標(biāo)準(zhǔn),這種交流方式保證了服務(wù)端寫好rest接口后,開發(fā)的Android、IOS甚至Angular這種OPOA的網(wǎng)頁程序都能共用這一套接口。rest的編碼規(guī)范,網(wǎng)上早已有很多了,不多說。Android的HttpClient程序,只要指定url、參數(shù)、Get或Post等請求類型,即可發(fā)送請求,當(dāng)服務(wù)器給出Http響應(yīng)之后,Android程序可以從中拿到返回的json字符串,用JSON等庫解析為集合或?qū)嶓w(其實json本質(zhì)無非是map和list兩種集合的混搭),然后遍歷和取值,自動或手動構(gòu)造成實體對象,然后改變頁面的顯示。在要頁面顯示時,由于Http返回的處理函數(shù)運(yùn)行于另一個線程,直接調(diào)用頁面的成員變量以試圖修改其顯示內(nèi)容會報錯。為此需要提早注冊一個Handler,用于在接收到消息時讀取頁面的「數(shù)據(jù)屬性」并改變頁面顯示,Http返回處理函數(shù)將數(shù)據(jù)更新到頁面的「數(shù)據(jù)屬性」中,向Handler發(fā)送一個消息,讓Handler讀取「數(shù)據(jù)屬性」并更新頁面即可。
在頁面顯示數(shù)據(jù)時,最常用到是ListView,可以定義一個Adapter,實現(xiàn)根據(jù)下標(biāo)返回Item頁面元素的方法,方法是聲明一個Item布局文件,Adapter持有數(shù)據(jù)集合,在要實現(xiàn)的方法中使用傳入的下標(biāo)獲得單個實體,再使用Item布局文件實例化一個頁面元素對象,用實體的屬性渲染頁面元素對象,將頁面元素對象返回即可,推薦使用ViewHolder來提高性能,這在包括《打造高質(zhì)量Android應(yīng)用》等書都講了。
4.實踐經(jīng)驗
有了上面1至3的知識,理論上即可完成App的開發(fā),善于將各種編程技能元素組合使用即可(界面知識 + 數(shù)據(jù)知識 = 一切),但還有些具體工作了才會獲得的經(jīng)驗。
在Android Studio中引入第三方庫是使用Gradle,類似maven,寫配置文件即可。
App上架方面360、百度、騰訊、豌豆莢、小米都成功上線了,華為和PP助手不允許非公司用戶上線,沒辦法。
嘗試手動實現(xiàn)定時輪詢來獲得服務(wù)器上的提醒,不成功,但對Service和BroadcastReceiver的理解更深了,Service的主要用途就是保證它打開的線程一直活著,但怎么保證這Service不死?一是設(shè)成常駐在通知欄的前臺Service,二是在安卓手機(jī)「設(shè)置」里將該App設(shè)為「鎖屏后繼續(xù)運(yùn)行」,還要將網(wǎng)絡(luò)設(shè)為「鎖屏后不斷網(wǎng)」,以保證鎖屏后線程能繼續(xù)輪詢并從網(wǎng)絡(luò)上得到最新信息。而BroadcastReceiver的主要作用是,讓兩個相互之間解耦合得很好的組件可以互相通訊,只需要發(fā)起通訊那方指定一個字符串——既不需要訪問對象,也不需要指定class類對象,指定一個字符串即可,這時通訊發(fā)起方根本不知道會不會有人響應(yīng)它、會有幾個人響應(yīng)它,零個、一個、多個響應(yīng)者都有可能,這就是「廣播」的意義,可以聯(lián)系「消息隊列」來理解它,主要的目的是解耦。
雖然如此還是常有用戶反饋收不到消息推送,只好使用專業(yè)的推送服務(wù),目前使用的是「友盟」,文檔很好,還提供了編程式發(fā)消息的sdk,測試也很友好,調(diào)了兩天,用戶基本能順利收到推送了,當(dāng)然還是要在手機(jī)設(shè)置中將App加入「鎖屏后繼續(xù)運(yùn)行」的白名單,否則友盟的PushService被殺掉就收不到推送了。另外第三方的「統(tǒng)計」還在摸索。
程序更新提示的實現(xiàn)是在啟動時向服務(wù)器發(fā)一個請求了解最新版本號,與本地程序版本號比對后,如果有更新的,則詢問是否要更新。apk包是在Android Studio里簽名打包之后,用360加固了之后(否則各平臺不允上線),傳到了「七牛云存儲」的服務(wù)器上,在App獲取最新版本號時,將最新的apk包的地址一并獲取下來,如果用戶同意更新,則在后臺啟動線程下載該apk包,下載完成后自動安裝。
App的登錄,是將用戶名密碼提交到服務(wù)器,服務(wù)器檢查正確后返回一個token,App將這token保存在本地,以后請求api時附帶用戶名和token一起發(fā)給服務(wù)器,服務(wù)器檢查用戶名和token正確,則將關(guān)鍵的數(shù)據(jù)返回給App,否則視具體需求返回不完整的數(shù)據(jù)(未注冊用戶看到的數(shù)據(jù)不完整),或者直接返回錯誤(未注冊用戶完全不允許訪問的數(shù)據(jù))。注冊時,則是生成一個驗證碼,將手機(jī)號和驗證碼存到庫里,調(diào)用發(fā)短信的服務(wù)商的接口發(fā)到用戶手機(jī),當(dāng)用戶輸入驗證碼發(fā)送請求到服務(wù)器,服務(wù)器檢查手機(jī)號和驗證碼是否匹配,如果匹配,則注冊成功。
Android頁面中嵌入Html頁面很簡單,但這兩者產(chǎn)生交互的功能還沒做過,如果以后做到,再補(bǔ)充進(jìn)來,這里留個TODO的「抽象方法」占位置。還有圖像的延遲加載、數(shù)據(jù)庫的使用,都要留個「TODO」。有時間即實踐之。
5.個人感想
「應(yīng)用程序員」做久了,總是覺得沒太多成就感,雖然功能有人用會很開心。但當(dāng)陷入沒什么技術(shù)含量的細(xì)枝末節(jié),覺得「知道這些東西僅代表有經(jīng)驗,沒什么了不起」,就覺得很虛無。安卓的知識,對我來說最有趣的還是體系結(jié)構(gòu)、界面的邏輯、數(shù)據(jù)的邏輯這三者,當(dāng)陷入具體的事務(wù),某個api該怎樣調(diào),函數(shù)有幾個該怎樣寫,甚至最無聊的安卓各版本差異,就算做成功了,也覺得沒什么好滿足的。
而關(guān)于代碼質(zhì)量,在寫了這么多年Java的服務(wù)器代碼,用過市面上幾乎所有流行框架,做過無數(shù)次封裝之后,寫這種App的代碼,真提不起重構(gòu)的興頭,「重構(gòu)的第一原則就是不要重構(gòu)」,這種思辯,恐怕沒幾個人辯得過我,因為我對在設(shè)計模式、重構(gòu)、軟件工程這些方面的閱讀和思考量都非常大,而且邏輯清晰,文采飛揚(yáng),曾經(jīng)而且如今也正在因一些文字被有大名氣大影響力的人物欣賞,這些事情久了,就覺得無聊,很多時候人的火氣不是來源于別人不認(rèn)同自己,而是來源于自己不認(rèn)同自己,當(dāng)你對自己有了認(rèn)同,就會覺得別人的發(fā)言很無聊,連反駁的興頭都沒有,有那工夫,不如真真切切地讀兩本書,寫兩行代碼。自身修為的提升,總要依賴于這些腳踏實地的努力,而非來源于口舌上的斗爭。最重要的是,要知道自己想要的是什么。
安卓開發(fā)心得5
Android 開發(fā)感想
18年從.net轉(zhuǎn)行做安卓開發(fā),現(xiàn)在已經(jīng)過去一年多了。說一下感想和心得體會!
一、開始
說一下我的經(jīng)厲,從畢業(yè)開始出來工作一直是從事.net方向的開發(fā)工作。一開始也是沒什么經(jīng)驗,加上也沒有其他手藝就找了一個.net的開發(fā)崗位,剛開始兩年都是做一些基本的系統(tǒng)開發(fā)OA、CRM什么的。后來跳槽換了幾家公司,也都差不多主要是.net web系統(tǒng)開發(fā)或者是后臺接口的開發(fā)。跟著團(tuán)隊一起做項目,完成需求開發(fā),解決bug等等。做了幾年看到現(xiàn)在移動互聯(lián)網(wǎng)是趨勢就打算換個方向,本來在我工作的第二年是有一次機(jī)會的但是錯過了,當(dāng)時買了mac準(zhǔn)備轉(zhuǎn)ios開發(fā)的但是剛出來工作基礎(chǔ)不好加上沒有自制能力所以就沒有成功轉(zhuǎn)型。
后來就還是在做.net相關(guān)的工作,結(jié)果發(fā)現(xiàn)做.net的越來越少,加上51上面發(fā)現(xiàn)工作崗位遠(yuǎn)遠(yuǎn)沒有java和Android的多就想著換個方向了,另一個原因是做.net技術(shù)一般工資也沒提高多少。然后就準(zhǔn)備學(xué)習(xí)Android了
二、Android學(xué)習(xí)
Android學(xué)習(xí)是自學(xué)的花了兩三個月的時間吧,買了幾本書,《Android第一行代碼》《Android開發(fā)藝術(shù)》再加上Google的文檔和菜鳥教程。剛開始是從一個創(chuàng)意開始,比如想做一個app。下載開發(fā)環(huán)境,配置開發(fā)工具,然后寫一個helloworld開始!那時候就是在家自學(xué),做幾個例子。跟著網(wǎng)上的教程寫一下,因為之前做開發(fā)也有一段時間了,java基礎(chǔ)還行基本掌握,就從Android開發(fā)的ui開始學(xué)習(xí),一開始是了解基本的一些ui和_ml怎么寫,然后學(xué)習(xí)如何交互,基本上是把第一行代碼里面的例子都敲了一遍。然后就是做一個項目實戰(zhàn)一下,比如一個天氣應(yīng)用,剛開始學(xué)習(xí)的時候也是什么都不會,經(jīng)常百度,看別人寫的代碼復(fù)制然后改一下,后來發(fā)現(xiàn)不行。還是要思考一下原理,然后在家做了一兩個app之后覺得差不多了解一點(diǎn)了。
1使用listview 和ReceryView的問題二自定義listview中的東西。
三、找工作
學(xué)完Android基礎(chǔ)加上做了幾個例子程序之后有了一點(diǎn)點(diǎn)信心,就開始寫簡歷了,寫的是一年工作經(jīng)驗。然后投簡歷,找工作的時候已經(jīng)是6月份了,給我打電話的公司也不多就每天投一下簡歷,然后看看面試題,想想怎么面試。再就是修改簡歷。大概找了一個星期左右吧,面試成功了一家公司,是一家外包公司,之前沒進(jìn)過外包加上剛開始也什么經(jīng)驗就去了工資待遇還可以。面試的時候問了一些簡單的view基本原理,常用的控件和多線程知識,以及java基礎(chǔ)等等。我大概答上來了,自我感覺70分吧。然后把之前公司的一些項目寫上去了。之前公司也有移動端的項目,我大概了解一些,只不過當(dāng)時是負(fù)責(zé)寫后臺接口的。就這樣就找到了第一份Android的開發(fā)工作。當(dāng)然也有一些不好的地方,比如編造了一些經(jīng)驗。但是不這樣的話根本連面試的機(jī)會都沒有。
四、工作體驗
工作也快一年多了吧,剛開始進(jìn)入公司是負(fù)責(zé)公司的一個內(nèi)部系統(tǒng)的Android端的開發(fā)工作,根據(jù)每一期的需求進(jìn)行開發(fā)。一般一個月到一個半月左右發(fā)布一個版本,更新迭代也是很快的,然后一開始是寫一些簡單的ui界面,調(diào)用一下接口。第一個月就是熟悉一下項目,剛好公司有同時和我交接,期間有不懂的也會問問其他同事,經(jīng)常是問一下ios端的開發(fā)。然后因為一些事情項目組的一個同事離職了,我才發(fā)現(xiàn)原來招我進(jìn)來是替代他的,然后Android端的話就只有我一個人了,感覺壓力有點(diǎn)大。不過那位同事走之前把項目基本和我介紹了,然后里面系統(tǒng)框架也已經(jīng)搭建好了,平時的主要工作就是改改界面,根據(jù)需求做一下系統(tǒng)的開發(fā),和之前界面的修改。只是因為基礎(chǔ)不好,加上經(jīng)驗也不是很足。常常加班,不過進(jìn)步也是有的。這一年多來基本保證了項目的正常開發(fā)上線,雖然有時候會拖延幾天。也緊急修改過一下bug。但是對我也是一種鍛煉吧。工作總體來說還好,和同事們相處也比較愉快。同時也感謝他們對我的幫助,從別人身上也學(xué)到了不少東西,有時候有問題也是一起交流討論。
工作中的一個技術(shù)問題和知識點(diǎn),自定義View,視頻播放,圖片加載緩存,獲取視頻縮略圖,復(fù)雜界面的布局,以及一些特殊效果的實現(xiàn)。這些問題下一篇文章會詳細(xì)寫出來。
五、總結(jié)和感慨
總結(jié)
通過這一年左右的工作經(jīng)歷讓我對移動端開發(fā)有了一個新的認(rèn)識,Android入門簡單但是要想深入學(xué)習(xí)也需要花一番功夫。同時在這一年的開發(fā)工作中,業(yè)余還是沒有主動學(xué)習(xí)和提高。對于項目的開發(fā)和代碼的質(zhì)量沒有更好的要求自己。有時候也應(yīng)該主動的去學(xué)習(xí)和思考一下項目中的代碼應(yīng)該怎么寫。能不能提高一點(diǎn),在完成任務(wù)的同時還需要對自己要求高一點(diǎn)。剛開始可能工作比較認(rèn)真,到后來也會發(fā)現(xiàn)工作不夠熱情,對于項目和代碼的激情也開始減少,這都是應(yīng)該思考和反思的 。
感慨
從畢業(yè)到現(xiàn)在也已經(jīng)工作四五年了,本來以為可以一直做.net的但是還是換了方向,但是一些基礎(chǔ)的編程思想都是相同的,比如數(shù)據(jù)結(jié)構(gòu),面向?qū)ο?,接口。一般的開發(fā)語言只是語法的不同,但是基本思想基本差不多。只是其適合使用的場景不同,例如編譯型語言適合后端開發(fā)和一些大型的系統(tǒng),例如java和C#。解釋型語言比較適合web方向的開發(fā)比如php和python等。不知道還能寫多久的代碼,工作到現(xiàn)在進(jìn)步也不是很明顯,大多數(shù)程序員基本都是寫需求。那一份還可以的薪水,勉強(qiáng)養(yǎng)活自己。要賺錢還是需要有其他的方向。工作之余也要考慮一下未來的路該怎么走,不可能寫一輩子代碼。最多到30多歲,要找到自己方向吧,工作時間越久想找到一份好工作也越來越難。快30了也有一定的危機(jī)感了,人最怕溫水煮青蛙。所以趁年輕還是多學(xué)點(diǎn)東西,不能到最后才發(fā)現(xiàn)想轉(zhuǎn)行已經(jīng)不會其他技能了。是很痛苦的一件事情!這句話是給自己說的,要加油,要努力!