版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
西南科技大學(xué)計(jì)算機(jī)學(xué)院本科(畢業(yè))校外實(shí)習(xí)報(bào)告
院(系:計(jì)算機(jī)科學(xué)與技術(shù)
專業(yè)班:計(jì)算機(jī)1104學(xué)生姓:學(xué)長(zhǎng)學(xué):20111639
成
:
指導(dǎo)老:
高小明
提交日:
一、實(shí)習(xí)的目的和意義畢業(yè)實(shí)習(xí)是學(xué)生大學(xué)本科教學(xué)實(shí)踐的主要環(huán)節(jié),對(duì)學(xué)生的實(shí)踐能力的培養(yǎng)具有十分重要的意義。學(xué)生通過(guò)本次實(shí)習(xí),能夠了解計(jì)算機(jī)專業(yè)的相關(guān)新技術(shù),了解理論知識(shí)在實(shí)際應(yīng)用中的作用,了解計(jì)算機(jī)技術(shù)的新發(fā)展,體驗(yàn)計(jì)算機(jī)專業(yè)的工作內(nèi)容和工作特點(diǎn),拓寬知識(shí)面,增強(qiáng)人際溝通能力,加強(qiáng)團(tuán)隊(duì)協(xié)作精神,為走向社會(huì)打下基礎(chǔ)。
Android以Linux為核心的Android運(yùn)行平臺(tái),使用Java作為編程語(yǔ)言。本次實(shí)習(xí)是在學(xué)習(xí)java語(yǔ)言程序設(shè)計(jì)的基礎(chǔ)上進(jìn)行的一次綜合實(shí)踐。通過(guò)綜合訓(xùn)練,要求學(xué)生掌握java語(yǔ)言程序設(shè)計(jì)的基本技能和Android編程的應(yīng)用,并較系統(tǒng)地掌握J(rèn)AVA語(yǔ)言程序設(shè)計(jì)開(kāi)發(fā)方法以及幫助文件的使用等,使學(xué)生通過(guò)本次實(shí)訓(xùn),能夠進(jìn)行獨(dú)立的Android應(yīng)用程序開(kāi)發(fā),能夠在實(shí)際操作中得到進(jìn)一步的提高,為以后的學(xué)習(xí)和工作打下良好的基礎(chǔ)。1.1實(shí)習(xí)目的1.了解公司,熟悉辦公流程及環(huán)境2.培養(yǎng)學(xué)生運(yùn)用所學(xué)課程Java語(yǔ)言程序設(shè)計(jì)的理論知識(shí)和技能,分析解決計(jì)算機(jī)實(shí)際應(yīng)用中的問(wèn)題的能力。
3.培養(yǎng)學(xué)生在Java語(yǔ)言程序設(shè)計(jì)的基礎(chǔ)上,開(kāi)發(fā)Android應(yīng)用程序的思想和方法。
4.培養(yǎng)學(xué)生調(diào)查研究、查閱技術(shù)文獻(xiàn)、資料、手冊(cè)以及編寫技術(shù)文獻(xiàn)的能力。
5.掌握MTKAndroid源碼1.2實(shí)習(xí)意義1.鍛煉自己的動(dòng)手能力,將學(xué)習(xí)的理論知識(shí)運(yùn)用于實(shí)踐當(dāng)中,反過(guò)來(lái)檢驗(yàn)書(shū)本上理論的正確性。將自己的理論知識(shí)與實(shí)踐融合,進(jìn)一步鞏固、深化已經(jīng)學(xué)過(guò)的理論知識(shí),提高綜合運(yùn)用所學(xué)過(guò)的知識(shí),并且培養(yǎng)自己發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的能力,加強(qiáng)對(duì)市場(chǎng)營(yíng)銷過(guò)程的認(rèn)識(shí);
2.更廣泛的直接接觸社會(huì),了解社會(huì)需要,加深對(duì)社會(huì)的認(rèn)識(shí),增強(qiáng)對(duì)社會(huì)的適應(yīng)性,將自己融合到社會(huì)中去,培養(yǎng)自己的實(shí)踐能力,縮短我們從一名大學(xué)生到一名工作人員之間的思想與業(yè)務(wù)距離。為以后進(jìn)一步走向社會(huì)打下堅(jiān)實(shí)的基礎(chǔ);
3.了解公司部門的構(gòu)成和職能,整個(gè)工作流程,從而確立自己在公司里最擅長(zhǎng)的工作崗位。為自己未來(lái)的職業(yè)生涯規(guī)劃起到關(guān)鍵的指導(dǎo)作用。二、實(shí)習(xí)內(nèi)容2.1系統(tǒng)學(xué)習(xí)java語(yǔ)言(1)Java語(yǔ)言特點(diǎn)·面向?qū)ο螅?/p>
與C++相比,JAVA是純的面向?qū)ο蟮恼Z(yǔ)言,C++為了向下兼容C,保留了很多C里面的特性,而C,眾所周知是面向過(guò)程的語(yǔ)言,這就使C++成為一個(gè)"混血兒"。而JAVA語(yǔ)法中取消了C++里為兼容C所保留的特性,如取消了頭文件、指針?biāo)惴?、結(jié)構(gòu)、單元等。·可移植(平臺(tái)無(wú)關(guān)性):
生成中間字節(jié)碼指令,與其他編程語(yǔ)言不同,Java并不生成可執(zhí)行文件(.exe文件),而是生成一種中間字節(jié)碼文件(.class文件)。任何操作系統(tǒng),只要裝有Java虛擬機(jī)(JVM),就可以解釋并執(zhí)行這個(gè)中間字節(jié)碼文件。這正是Java實(shí)現(xiàn)可移植的機(jī)制。
·原始數(shù)據(jù)類型存儲(chǔ)方法固定,避開(kāi)移植時(shí)的問(wèn)題
Java的原始數(shù)據(jù)類型的大小是固定的。比如,在任何機(jī)器上,整型都是32位,而C++里整型是依賴于目標(biāo)機(jī)器的,對(duì)16位處理器(比如8086),整數(shù)用兩個(gè)字節(jié)表示;在像Sun
SPARC這樣的32位處理器中,整數(shù)用4個(gè)字節(jié)表示。在Intel
Pentium處理器上,整數(shù)類型由具體的操作系統(tǒng)決定:對(duì)于DOS和Win32來(lái)說(shuō),整數(shù)是2個(gè)字節(jié);對(duì)于Windows
9x
、NT和2000,整數(shù)是4個(gè)字節(jié)。當(dāng)然,使整數(shù)類型平臺(tái)無(wú)關(guān)之后,性能必然有所下降,但就Java來(lái)說(shuō),這個(gè)代價(jià)是值得的。Java的字符串,則采用標(biāo)準(zhǔn)的Unicode格式保存??梢哉f(shuō),沒(méi)有這個(gè)特性,Java的可移植性也不可能實(shí)現(xiàn)。
·JAVA在語(yǔ)法上與C++類似JAVA的語(yǔ)法與C++很接近,有過(guò)C或者C++編程經(jīng)驗(yàn)的程序員很容易就可以學(xué)會(huì)JAVA語(yǔ)法;·取消了C++的一些復(fù)雜而低效的特性比如:用接口技術(shù)代替了C++的多重繼承。C++中,一個(gè)類允許有多個(gè)超類,這個(gè)特性叫做"多重繼承",多重繼承使得編譯器非常復(fù)雜且效率不高;JAVA的類只允許有一個(gè)超類,而用接口(Interface)技術(shù)實(shí)現(xiàn)與C++的多繼承相類似的功能其它被取消的特性包括:虛擬基礎(chǔ)類、運(yùn)算符過(guò)載等·JAVA的基本解釋器和類支持模塊大概僅40K即使加入基本的標(biāo)準(zhǔn)庫(kù)和支持線程的模塊,也才220K左右。與GUI(圖形用戶界面)相比,明顯小很多·取消了指針?biāo)惴–的最關(guān)鍵的一個(gè)特性是它的強(qiáng)大指針?biāo)惴?,比如可以用指針訪問(wèn)字符串、數(shù)組甚至文件,很容易產(chǎn)生指針溢出,意外地改寫內(nèi)存和損毀數(shù)據(jù)。JAVA里有一個(gè)指針模型,對(duì)于普通的任務(wù),如訪問(wèn)字符串、數(shù)組,根本不用指針,而一旦需要,比如訪問(wèn)對(duì)象、文件時(shí),也可以獲得指針的強(qiáng)大能力,但JAVA同時(shí)有高度的指針安全保障,用戶永遠(yuǎn)不可能訪問(wèn)一個(gè)壞掉的指針、不可能造成內(nèi)存分配錯(cuò)誤,也用不著專門提防可能出現(xiàn)的內(nèi)存漏洞?!?qiáng)大的多線程能力多線程可以使程序有更好的交互性和實(shí)時(shí)性,并可以最大限度地利用多處理器系統(tǒng)。JAVA有著強(qiáng)大的多線程處理能力,因?yàn)楦髦髁鞑僮飨到y(tǒng)平臺(tái)在線程的實(shí)施方面有重大的差異,所以JAVA為不同的操作系統(tǒng)實(shí)現(xiàn)了專門的多線程機(jī)制。在這點(diǎn)上來(lái)說(shuō),JAVA沒(méi)有做到平臺(tái)無(wú)關(guān)。(2)面向?qū)ο蠡A(chǔ)static稱為靜態(tài)修飾符,它可以修飾類中的屬性和方法。1.靜態(tài)屬性被static修飾的屬性稱為靜態(tài)屬性,這類屬性一個(gè)最本質(zhì)的特點(diǎn)是:它們是類的屬性,而不屬于任何一個(gè)類的具體對(duì)象。換句話說(shuō),對(duì)于該類的任何一個(gè)具體對(duì)象而言,靜態(tài)屬性是一個(gè)公共的存儲(chǔ)單元,任何一個(gè)類的對(duì)象訪問(wèn)它時(shí),取到的都是相同的數(shù)值,同樣任何一個(gè)類的對(duì)象去修改它時(shí),也都是在對(duì)同一個(gè)內(nèi)存單元做操作。靜態(tài)屬性節(jié)省空間;靜態(tài)屬性保持類對(duì)象的一致性修改舉例:總和、基本工資等2.靜態(tài)方法static修飾符修飾的屬性是屬于類的公共屬性:與之相仿,用static修飾符修飾的方法,是屬于整個(gè)類的類方法;而不用static至少有三重含義:(1)調(diào)用這個(gè)方法時(shí),應(yīng)該使用類名做前綴,而不是某一個(gè)具體的對(duì)象名;(2)非static的方法是屬于某個(gè)對(duì)象的方法,在這個(gè)對(duì)象創(chuàng)建時(shí)對(duì)象的方法在內(nèi)存中擁有自己專用的代碼段;而static的方法是屬于整個(gè)類的,它在內(nèi)存中的代碼段將隨著類的定義而分配和裝載,不被任何一個(gè)對(duì)象專有:(3)由于static方法是屬于整個(gè)類的,所以它不能操縱和處理屬于某個(gè)對(duì)象的成員變量,而只能處理屬于整個(gè)類的成員變量。也即,static方法只能處理static的數(shù)據(jù)。3.靜態(tài)初始化器靜態(tài)初始化器是由關(guān)鍵字static引導(dǎo)的一對(duì)大括號(hào)括起的語(yǔ)句組。它的作用與類的構(gòu)造函數(shù)有些相似,都用來(lái)完成初始化的工作,但是靜態(tài)初始化器與構(gòu)造函數(shù)有三點(diǎn)根本的不同:(1)構(gòu)造函數(shù)是對(duì)每個(gè)新創(chuàng)建的對(duì)象初始化,而靜態(tài)初始化器是對(duì)每個(gè)類進(jìn)行初始化;(2)構(gòu)造函數(shù)是在用new運(yùn)算符產(chǎn)生新對(duì)象時(shí)由系統(tǒng)自動(dòng)執(zhí)行,而靜態(tài)初始化器則是在它所屬的類加載入內(nèi)存時(shí)由系統(tǒng)調(diào)用運(yùn)行的;(3)不同于構(gòu)造函數(shù),靜態(tài)初始化器不是方法,沒(méi)有方法名、返回值和參數(shù)列表。讓我們考慮如下的問(wèn)題,所以考慮由系統(tǒng)自動(dòng)為新雇員對(duì)象生成編號(hào)變量的值,將Employee類的屬性定義改寫為:classEmployee//定義雇員類{privateintm_EmpNo;//私有屬性:雇員編號(hào)Stringm_EmpName;//雇員姓名charm_EmpGender;//雇員性別privatedoublem_EmpSalary;//私有屬性:雇員工資staticdoublem_MinSalary;//靜態(tài)屬性:最低工資staticintm_NextEmpNo;//下一個(gè)新雇員的編號(hào)}構(gòu)造函數(shù)為:Employee(Stringname,charsex,doublesal)//構(gòu)造函數(shù),完成初始化工作{m_EmpNo=m_NextEmpNo++;//新雇員使用了新編號(hào)之后,再產(chǎn)生另一個(gè)新編號(hào)m_EmpName=newString(name);m_EmpGender=sex;if(sal>=m_MinSalary)//工資額不合理時(shí)使用最低工資m_EmpSalary=sal;elsem_EmpSalary=m_MinSalary;這里,為實(shí)現(xiàn)編號(hào)不重復(fù)地自動(dòng)生成,引入一個(gè)類成員m_NextEmpNo,它的值是下一個(gè)新創(chuàng)建的雇員對(duì)象的編號(hào)。每當(dāng)有新對(duì)象生成時(shí),系統(tǒng)調(diào)用構(gòu)造函數(shù),將m_NextEmpNo的當(dāng)前值賦給新雇員的編號(hào)變量m_EmpNo,然后讓類靜態(tài)屬性m_NextEmpNo自動(dòng)加一,這樣新對(duì)象的編號(hào)就不會(huì)與已有對(duì)象的編號(hào)相重復(fù)。表面看來(lái)整個(gè)問(wèn)題似已解決,但實(shí)際上還有很關(guān)鍵的一步?jīng)]有完成:那就是static的類屬性m_NextEmpNo的初始化問(wèn)題??傊?,靜態(tài)初始化器的作用是對(duì)整個(gè)類完成初始化操作,包括給static類成員賦初值等,它在系統(tǒng)向內(nèi)存加載時(shí)自動(dòng)完成。(3)java線程基礎(chǔ)一、線程概述
線程是程序運(yùn)行的基本執(zhí)行單元。當(dāng)操作系統(tǒng)(不包括單線程的操作系統(tǒng),如微軟早期的DOS)在執(zhí)行一個(gè)程序時(shí),會(huì)在系統(tǒng)中建立一個(gè)進(jìn)程,而在這個(gè)進(jìn)程中,必須至少建立一個(gè)線程(這個(gè)線程被稱為主線程)來(lái)作為這個(gè)程序運(yùn)行的入口點(diǎn)。因此,在操作系統(tǒng)中運(yùn)行的任何程序都至少有一個(gè)主線程。
進(jìn)程和線程是現(xiàn)代操作系統(tǒng)中兩個(gè)必不可少的運(yùn)行模型。在操作系統(tǒng)中可以有多個(gè)進(jìn)程,這些進(jìn)程包括系統(tǒng)進(jìn)程(由操作系統(tǒng)內(nèi)部建立的進(jìn)程)和用戶進(jìn)程(由用戶程序建立的進(jìn)程);一個(gè)進(jìn)程中可以有一個(gè)或多個(gè)線程。進(jìn)程和進(jìn)程之間不共享內(nèi)存,也就是說(shuō)系統(tǒng)中的進(jìn)程是在各自獨(dú)立的內(nèi)存空間中運(yùn)行的。而一個(gè)進(jìn)程中的線可以共享系統(tǒng)分派給這個(gè)進(jìn)程的內(nèi)存空間。
線程不僅可以共享進(jìn)程的內(nèi)存,而且還擁有一個(gè)屬于自己的內(nèi)存空間,這段內(nèi)存空間也叫做線程棧,
是在建立線程時(shí)由系統(tǒng)分配的,主要用來(lái)保存線程內(nèi)部所使用的數(shù)據(jù),如線程執(zhí)行函數(shù)中所定義的變量。
注意:任何一個(gè)線程在建立時(shí)都會(huì)執(zhí)行一個(gè)函數(shù),這個(gè)函數(shù)叫做線程執(zhí)行函數(shù)。也可以將這個(gè)函數(shù)看做線程的入口點(diǎn)(類似于程序中的main函數(shù))。無(wú)論使用什么語(yǔ)言或技術(shù)來(lái)建立線程,都必須執(zhí)行這個(gè)函數(shù)(這個(gè)函數(shù)的表現(xiàn)形式可能不一樣,但都會(huì)有一個(gè)這樣的函數(shù))。如在Windows中用于建立線程的API函數(shù)CreateThread的第三個(gè)參數(shù)就是這個(gè)執(zhí)行函數(shù)的指針。
在操作系統(tǒng)將進(jìn)程分成多個(gè)線程后,這些線程可以在操作系統(tǒng)的管理下并發(fā)執(zhí)行,從而大大提高了程序的運(yùn)行效率。雖然線程的執(zhí)行從宏觀上看是多個(gè)線程同時(shí)執(zhí)行,但實(shí)際上這只是操作系統(tǒng)的障眼法。由于一塊CPU同時(shí)只能執(zhí)行一條指令,因此,在擁有一塊CPU的計(jì)算機(jī)上不可能同時(shí)執(zhí)行兩個(gè)任務(wù)。而操作系統(tǒng)為了能提高程序的運(yùn)行效率,在一個(gè)線程空閑時(shí)會(huì)撤下這個(gè)線程,并且會(huì)讓其他的線程來(lái)執(zhí)行,這種方式叫做線程調(diào)度。我們之所以從表面上看是多個(gè)線程同時(shí)執(zhí)行,是因?yàn)椴煌€程之間切換的時(shí)間非常短,而且在一般情況下切換非常頻繁。假設(shè)我們有線程A和B。在運(yùn)行時(shí),可能是A執(zhí)行了1毫秒后,切換到B后,B又執(zhí)行了1毫秒,然后又切換到了A,A又執(zhí)行1毫秒。由于1毫秒的時(shí)間對(duì)于普通人來(lái)說(shuō)是很難感知的,因此,從表面看上去就象A和B同時(shí)執(zhí)行一樣,但實(shí)際上A和B是交替執(zhí)行的。二、線程給我們帶來(lái)的好處如果能合理地使用線程,將會(huì)減少開(kāi)發(fā)和維護(hù)成本,甚至可以改善復(fù)雜應(yīng)用程序的性能。如在GUI應(yīng)用程序中,還以通過(guò)線程的異步特性來(lái)更好地處理事件;在應(yīng)用服務(wù)器程序中可以通過(guò)建立多個(gè)線程來(lái)處理客戶端的請(qǐng)求。線程甚至還可以簡(jiǎn)化虛擬機(jī)的實(shí)現(xiàn),如Java虛擬機(jī)(JVM)的垃圾回收器(garbagecollector)通常運(yùn)行在一個(gè)或多個(gè)線程中。因此,使用線程將會(huì)從以下五個(gè)方面來(lái)改善我們的應(yīng)用程序:1.充分利用CPU資源現(xiàn)在世界上大多數(shù)計(jì)算機(jī)只有一塊CPU。因此,充分利用CPU資源顯得尤為重要。當(dāng)執(zhí)行單線程程序時(shí),由于在程序發(fā)生阻塞時(shí)CPU可能會(huì)處于空閑狀態(tài)。這將造成大量的計(jì)算資源的浪費(fèi)。而在程序中使用多線程可以在某一個(gè)線程處于休眠或阻塞時(shí),而CPU又恰好處于空閑狀態(tài)時(shí)來(lái)運(yùn)行其他的線程。這樣CPU就很難有空閑的時(shí)候。因此,CPU資源就得到了充分地利用。2.簡(jiǎn)化編程模型如果程序只完成一項(xiàng)任務(wù),那只要寫一個(gè)單線程的程序,并且按著執(zhí)行這個(gè)任務(wù)的步驟編寫代碼即可。但要完成多項(xiàng)任務(wù),如果還使用單線程的話,那就得在在程序中判斷每項(xiàng)任務(wù)是否應(yīng)該執(zhí)行以及什么時(shí)候執(zhí)行。如顯示一個(gè)時(shí)鐘的時(shí)、分、秒三個(gè)指針。使用單線程就得在循環(huán)中逐一判斷這三個(gè)指針的轉(zhuǎn)動(dòng)時(shí)間和角度。如果使用三個(gè)線程分另來(lái)處理這三個(gè)指針的顯示,那么對(duì)于每個(gè)線程來(lái)說(shuō)就是指行一個(gè)單獨(dú)的任務(wù)。這樣有助于開(kāi)發(fā)人員對(duì)程序的理解和維護(hù)。3.簡(jiǎn)化異步事件的處理當(dāng)一個(gè)服務(wù)器應(yīng)用程序在接收不同的客戶端連接時(shí)最簡(jiǎn)單地處理方法就是為每一個(gè)客戶端連接建立一個(gè)線程。然后監(jiān)聽(tīng)線程仍然負(fù)責(zé)監(jiān)聽(tīng)來(lái)自客戶端的請(qǐng)求。如果這種應(yīng)用程序采用單線程來(lái)處理,當(dāng)監(jiān)聽(tīng)線程接收到一個(gè)客戶端請(qǐng)求后,開(kāi)始讀取客戶端發(fā)來(lái)的數(shù)據(jù),在讀完數(shù)據(jù)后,read方法處于阻塞狀態(tài),也就是說(shuō),這個(gè)線程將無(wú)法再監(jiān)聽(tīng)客戶端請(qǐng)求了。而要想在單線程中處理多個(gè)客戶端請(qǐng)求,就必須使用非阻塞的Socket連接和異步I/O。但使用異步I/O方式比使用同步I/O更難以控制,也更容易出錯(cuò)。因此,使用多線程和同步I/O可以更容易地處理類似于多請(qǐng)求的異步事件。4.使GUI更有效率使用單線程來(lái)處理GUI事件時(shí),必須使用循環(huán)來(lái)對(duì)隨時(shí)可能發(fā)生的GUI事件進(jìn)行掃描,在循環(huán)內(nèi)部除了掃描GUI事件外,還得來(lái)執(zhí)行其他的程序代碼。如果這些代碼太長(zhǎng),那么GUI事件就會(huì)被“凍結(jié)”,直到這些代碼被執(zhí)行完為止。在現(xiàn)代的GUI框架(如SWING、AWT和SWT)中都使用了一個(gè)單獨(dú)的事件分派線程(eventdispatchthread,EDT)來(lái)對(duì)GUI事件進(jìn)行掃描。當(dāng)我們按下一個(gè)按鈕時(shí),按鈕的單擊事件函數(shù)會(huì)在這個(gè)事件分派線程中被調(diào)用。由于EDT的任務(wù)只是對(duì)GUI事件進(jìn)行掃描,因此,這種方式對(duì)事件的反映是非??斓?。5.節(jié)約成本提高程序的執(zhí)行效率一般有三種方法:(1)增加計(jì)算機(jī)的CPU個(gè)數(shù)。(2)為一個(gè)程序啟動(dòng)多個(gè)進(jìn)程(3)在程序中使用多進(jìn)程。第一種方法是最容易做到的,但同時(shí)也是最昂貴的。這種方法不需要修改程序,從理論上說(shuō),任何程序都可以使用這種方法來(lái)提高執(zhí)行效率。第二種方法雖然不用購(gòu)買新的硬件,但這種方式不容易共享數(shù)據(jù),如果這個(gè)程序要完成的任務(wù)需要必須要共享數(shù)據(jù)的話,這種方式就不太方便,而且啟動(dòng)多個(gè)線程會(huì)消耗大量的系統(tǒng)資源。第三種方法恰好彌補(bǔ)了第一種方法的缺點(diǎn),而又繼承了它們的優(yōu)點(diǎn)。也就是說(shuō),既不需要購(gòu)買CPU,也不會(huì)因?yàn)閱⑻嗟木€程而占用大量的系統(tǒng)資源(在默認(rèn)情況下,一個(gè)線程所占的內(nèi)存空間要遠(yuǎn)比一個(gè)進(jìn)程所占的內(nèi)存空間小得多),并且多線程可以模擬多塊CPU的運(yùn)行方式,因此,使用多線程是提高程序執(zhí)行效率的最廉價(jià)的方式。2.2系統(tǒng)學(xué)習(xí)Android語(yǔ)言2.2.1歷史背景:2007年11月5日,Google發(fā)布基于Linux平臺(tái)的開(kāi)源移動(dòng)手機(jī)平臺(tái)——Android。該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件等組成,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開(kāi)放的移動(dòng)開(kāi)發(fā)平臺(tái)。2008年9月22日,美國(guó)運(yùn)營(yíng)商T‐MobileUSA在紐約正式發(fā)布第一款Google手機(jī)——T‐MobileG1。該款手機(jī)為中國(guó)臺(tái)灣HTC(宏達(dá)電)代工制造,是世界上第一部使用Android操作系統(tǒng)的手機(jī),支持WCDMA/HSPA網(wǎng)絡(luò),理論下載速率為7.2Mbit/s,并支持Wi‐Fi無(wú)線局域網(wǎng)絡(luò)。Android的特性Android的主要特性如下:·應(yīng)用程序框架,支持組建的重用與替換?!alvik虛擬機(jī),專門為移動(dòng)設(shè)備做了優(yōu)化?!?nèi)部集成瀏覽器,該瀏覽器基于開(kāi)源的WibKit引擎。·優(yōu)化的圖形庫(kù),包括2D和3D圖形庫(kù),3D圖形庫(kù)基于OpenGLES1.0(硬件加速可選)?!QLite數(shù)據(jù)庫(kù),是一套開(kāi)放性源代碼的關(guān)系型數(shù)據(jù)庫(kù),其特點(diǎn)在于輕量級(jí)的設(shè)計(jì)結(jié)構(gòu),更適合在手機(jī)上使用?!SM電話(依賴于硬件)。·藍(lán)牙(Bluetooth),EDGE,3G和Wi‐Fi(依賴于硬件)?!ざ嗝襟w支持,包括常見(jiàn)的音頻、視頻和靜態(tài)圖像文件格式。·照相機(jī)、GPS、指南針和加速度計(jì)等豐富的傳感器(依賴于硬件)?!へS富的開(kāi)發(fā)環(huán)境,包括設(shè)備模擬器、調(diào)試工具、內(nèi)存及性能分析圖表,以及Eclipse集成開(kāi)發(fā)環(huán)境插件。1)程序應(yīng)用Android連同一個(gè)核心應(yīng)用程序包發(fā)布,該應(yīng)用程序包括E‐mail客戶端、SMS短消息程序、日歷、地圖、瀏覽器、聯(lián)系人管理程序等。所以的應(yīng)用程序都是用Java編寫的。2)應(yīng)用程序框架開(kāi)發(fā)者完全可以訪問(wèn)核心應(yīng)用程序所使用的API框架。該應(yīng)用程序框架架構(gòu)用來(lái)簡(jiǎn)化組件的軟件的重用,任何一個(gè)應(yīng)用程序都可以發(fā)布它的模塊功能并且任何其他的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)要遵循框架的安全性限制)。該應(yīng)用程序重用機(jī)制使得組件可以被用戶替換。以下所有的應(yīng)用程序都由一系列的服務(wù)和系統(tǒng)組成,包括:1.一個(gè)可擴(kuò)展的視圖(Views)可以用來(lái)創(chuàng)建應(yīng)用程序,包括列表(lists)、網(wǎng)絡(luò)(grids)、文本框(textboxes)、按鈕(buttons),甚至是一個(gè)可嵌入的Web瀏覽器。2.內(nèi)容管理器(ContentProviders)使得應(yīng)用程序可以訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫(kù)),或者共享它們自己的數(shù)據(jù)。3.一個(gè)資源管理器(ResourceManager)提供非代碼資源的訪問(wèn),如本地字符串、圖形和分層文件(layoutfiles)。4.一個(gè)通知管理器(NotificationManager)使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶通知信息。5.一個(gè)活動(dòng)類管理器(ActivityManager)用來(lái)管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。3)Android程序庫(kù)Android包括一個(gè)被Android系統(tǒng)中各種不同組件所使用的C/C++集庫(kù)。該庫(kù)通過(guò)Android應(yīng)用程序框架為開(kāi)發(fā)者提供服務(wù)。以下是一些主要的核心庫(kù):1.系統(tǒng)C庫(kù):一個(gè)從BSD繼承來(lái)的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù)(libc),專門為基于EmbeddedLinux的設(shè)備定制。2.媒體庫(kù):基于PacketVideoOpenCORE;該庫(kù)支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。3.SurfaceManager:對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提供2D和3D圖層的無(wú)縫融合。4.LibWebCore:一個(gè)最新的Web瀏覽器引擎,用來(lái)支持Android瀏覽器和一個(gè)可嵌入的Web視圖。5.SGL:一個(gè)內(nèi)置的2D圖形引擎。6.3Dlibraries:基于OpenGLES1.0APIs實(shí)現(xiàn);該庫(kù)可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。7.FreeType:位圖(bitmap)和向量(vector)字體顯示。8.SQLite:一個(gè)對(duì)于所以應(yīng)用程序可用、功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫(kù)引擎。4)Android運(yùn)行庫(kù)Android包括了一個(gè)核心庫(kù),該核心庫(kù)提供了Java編程語(yǔ)言核心庫(kù)的大多數(shù)功能。每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。Dalvik是針對(duì)同時(shí)高效地運(yùn)行多個(gè)VMs實(shí)現(xiàn)的。Dalvik虛擬機(jī)執(zhí)行.dex的Dalvik可執(zhí)行文件,該格式文件針對(duì)最小內(nèi)存使用做了優(yōu)化。該虛擬機(jī)是基于寄存器的,所有的類都是經(jīng)由Java匯編器編譯,然后通過(guò)SDK中的DX工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。Dalvik虛擬機(jī)依賴于Linux的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制。5)Linux內(nèi)核Android的核心系統(tǒng)服務(wù)依賴于Linux2.6內(nèi)核,如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。Linux內(nèi)核也同時(shí)作為硬件和軟件之間的硬件抽象層。6)service以及service的生命周期兩種用處:后臺(tái)運(yùn)行和跨進(jìn)程訪問(wèn)兩種模式:startService()/bindService()模式場(chǎng)合:調(diào)用者與服務(wù)之間沒(méi)有關(guān)連,即使調(diào)用者退出了,服務(wù)仍然運(yùn)行即用startService(),調(diào)用者與服務(wù)綁定在了一起,調(diào)用者一旦退出,服務(wù)也就終止則用bindService()生命周期:service的生命周期沒(méi)有像activity里的onstop,主要經(jīng)歷創(chuàng)建、開(kāi)始、銷毀三個(gè)階段,由于有兩種模式的存在,其生命周期有兩種體現(xiàn)方式如果打算采用Context.startService()方法啟動(dòng)服務(wù),在服務(wù)未被創(chuàng)建時(shí),系統(tǒng)會(huì)先調(diào)用服務(wù)的onCreate()方法,接著調(diào)用onStart()方法,如果調(diào)用startService()方法前服務(wù)已經(jīng)被創(chuàng)建,多次調(diào)用startService()方法并不會(huì)導(dǎo)致多次創(chuàng)建服務(wù),但會(huì)導(dǎo)致多次調(diào)用onStart()方法。采用startService()方法啟動(dòng)的服務(wù),只能調(diào)用Context.stopService()方法結(jié)束服務(wù),服務(wù)結(jié)束時(shí)會(huì)調(diào)用onDestroy()方法。onBind()只有采用Context.bindService()方法啟動(dòng)服務(wù)時(shí)才會(huì)回調(diào)該方法。該方法在調(diào)用者與服務(wù)綁定時(shí)被調(diào)用,當(dāng)調(diào)用者與服務(wù)已經(jīng)綁定,多次調(diào)用Context.bindService()方法并不會(huì)導(dǎo)致該方法被多次調(diào)用。采用Context.bindService()方法啟動(dòng)服務(wù)時(shí)只能調(diào)用onUnbind()方法解除調(diào)用者與服務(wù)解除,服務(wù)結(jié)束時(shí)會(huì)調(diào)用onDestroy()方法。2.3系統(tǒng)學(xué)習(xí)Github知識(shí)Git是一個(gè)分布式的版本控制系統(tǒng),最初由LinusTorvalds編寫,用作Linux內(nèi)核代碼的管理。在推出后,Git在其它項(xiàng)目中也取得了很大成功,尤其是在Ruby社區(qū)中。目前,包括Rubinius、Merb和Bitcoin在內(nèi)的很多知名項(xiàng)目都使用了Git。Git同樣可以被諸如Capistrano和VladtheDeployer這樣的部署工具所使用。作為開(kāi)源代碼庫(kù)以及版本控制系統(tǒng),Github擁有140多萬(wàn)開(kāi)發(fā)者用戶。隨著越來(lái)越多的應(yīng)用程序轉(zhuǎn)移到了云上,Github已經(jīng)成為了管理軟件開(kāi)發(fā)以及發(fā)現(xiàn)已有代碼的首選方法[2]。如前所述,作為一個(gè)分布式的版本控制系統(tǒng),在Git中并不存在主庫(kù)這樣的概念,每一份復(fù)制出的庫(kù)都可以獨(dú)立使用,任何兩個(gè)庫(kù)之間的不一致之處都可以進(jìn)行合并。GitHub可以托管各種git庫(kù),并提供一個(gè)web界面,但與其它像SourceForge或GoogleCode這樣的服務(wù)不同,GitHub的獨(dú)特賣點(diǎn)在于從另外一個(gè)項(xiàng)目進(jìn)行分支的簡(jiǎn)易性。為一個(gè)項(xiàng)目貢獻(xiàn)代碼非常簡(jiǎn)單:首先點(diǎn)擊項(xiàng)目站點(diǎn)的“fork”的按鈕,然后將代碼檢出并將修改加入到剛才分出的代碼庫(kù)中,最后通過(guò)內(nèi)建的“pullrequest”機(jī)制向項(xiàng)目負(fù)責(zé)人申請(qǐng)代碼合并。已經(jīng)有人將GitHub稱為代碼玩家的MySpace。在GitHub進(jìn)行分支就像在Myspace(或Facebook…)進(jìn)行交友一樣,在社會(huì)關(guān)系圖的節(jié)點(diǎn)中不斷的連線。GitHub項(xiàng)目本身自然而然的也在GitHub上進(jìn)行托管,只不過(guò)在一個(gè)私有的,公共視圖不可見(jiàn)的庫(kù)中。開(kāi)源項(xiàng)目可以免費(fèi)托管,但私有庫(kù)則并不如此。ChrisWanstrath,GitHub的開(kāi)發(fā)者之一,肯定了通過(guò)付費(fèi)的私有庫(kù)來(lái)在財(cái)務(wù)上支持免費(fèi)庫(kù)的托管這一計(jì)劃。是的,我們正是這么計(jì)劃的。通過(guò)與客戶的接洽,開(kāi)發(fā)FamSpam,甚至是開(kāi)發(fā)GitHub本身,GitHub的私有庫(kù)已經(jīng)被證明了物有所值。任何希望節(jié)省時(shí)間并希望和團(tuán)隊(duì)其它成員一樣遠(yuǎn)離頁(yè)面頻繁轉(zhuǎn)換之苦的人士都會(huì)從GitHub中獲得他們真正想要的價(jià)值。在GitHub,用戶可以十分輕易地找到海量的開(kāi)源代碼。三、實(shí)習(xí)收獲與感受我在為期四個(gè)月的實(shí)習(xí)中學(xué)到了很多在課堂上根本就學(xué)不到的知識(shí),收益非淺.通過(guò)四個(gè)月的android實(shí)習(xí),基本掌握了Android應(yīng)用程序開(kāi)發(fā)的一般流程。對(duì)常用控件基本掌握其
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 玉米收獲機(jī)操作工創(chuàng)新意識(shí)知識(shí)考核試卷含答案
- 淡水珍珠養(yǎng)殖工崗前安全規(guī)程考核試卷含答案
- 海洋浮標(biāo)工崗前實(shí)操水平考核試卷含答案
- 真空電子器件裝配工崗前技能考核試卷含答案
- 蔬菜栽培工創(chuàng)新思維水平考核試卷含答案
- 活性炭生產(chǎn)工崗前安全文明考核試卷含答案
- 飼草產(chǎn)品加工工風(fēng)險(xiǎn)評(píng)估與管理知識(shí)考核試卷含答案
- 銀行內(nèi)部審計(jì)工作制度
- 酒店員工晉升制度
- 超市員工離職及退休制度
- 多維度解析黃河河源區(qū)徑流模擬與動(dòng)態(tài)演變
- 《煤礦安全規(guī)程(2025)》防治水部分解讀課件
- 2025至2030中國(guó)新癸酸縮水甘油酯行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025年保安員職業(yè)技能考試筆試試題(100題)含答案
- 尾礦庫(kù)閉庫(kù)綜合治理工程項(xiàng)目可行性研究報(bào)告
- 員工自互檢培訓(xùn)
- 視頻網(wǎng)絡(luò)傳輸協(xié)議書(shū)
- 互聯(lián)網(wǎng)護(hù)理慢病管理制度
- 綠城物業(yè)工程部考試題及答案
- TCHES65-2022生態(tài)護(hù)坡預(yù)制混凝土裝配式護(hù)岸技術(shù)規(guī)程
- 2025年高考高三物理一輪復(fù)習(xí)實(shí)驗(yàn)十四 測(cè)量玻璃的折射率課件
評(píng)論
0/150
提交評(píng)論