




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目十二網(wǎng)絡(luò)編程學(xué)習(xí)目標掌握使用線程編程掌握Socket通信掌握HTTP通信掌握Handler-Message消息傳遞機制情景導(dǎo)入日常生活中通過手機進行資料查詢、交流、數(shù)據(jù)監(jiān)控已成為大多數(shù)人的選擇。本項目以火災(zāi)監(jiān)測系統(tǒng)為背景,通過Socket,HTTP請求網(wǎng)絡(luò)編程,實現(xiàn)火情監(jiān)控系統(tǒng)中的核心功能,火災(zāi)信息監(jiān)控以及回饋報警信息等。任務(wù)描述本任務(wù)將設(shè)計一款獲取災(zāi)情信息功能并且能夠反饋信息的程序。使用線性布局技術(shù)來設(shè)計登錄系統(tǒng)界面點擊“開始獲取”按鈕,建立Socket網(wǎng)絡(luò)通信,并且開始獲取災(zāi)情數(shù)據(jù)顯示到界面上點擊“回饋信息”按鈕,將災(zāi)情信息情況回饋到服務(wù)端【基本框架】基本框架如圖12.1所示,將框架圖轉(zhuǎn)換成的效果如圖12.2所示。任務(wù)描述任務(wù)技能技能點1線程1線程簡介線程是CPU調(diào)度和分派的基本單位,線程必須依賴進程而存活,并和其他線程共享依賴的進程的資源。線程是獨立運行(相對于其他線程而言),線程也需要有自己的資源,包括棧、寄存器、狀態(tài)、程序計時器。線程有新建、就緒、運行、阻塞、死亡五種狀態(tài)。2線程實現(xiàn)方法在Android中有實現(xiàn)線程thread的方法有兩種,第一種是擴展java.lang.Thread類,第二種是實現(xiàn)Runnable接口。Thread類代表線程類,它的兩個主要方法是:run(),start()。任務(wù)技能3進程與線程的區(qū)別在Android平臺上一個程序(應(yīng)用APP)是一個進程,一個進程至少有一個線程。線程的劃分尺度小于進程,使得多線程程序的并發(fā)性高。進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大地提高了程序的運行效率。線程與進程在執(zhí)行過程中的區(qū)別為:每個獨立的線程都有一個程序運行的入口、順序執(zhí)行序列和程序的出口。線程不能夠獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,所以多進程程序比多線程程序健壯。進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產(chǎn)生影響,而線程只是一個進程中的不同的執(zhí)行路徑。對于一些要求同時進行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進程。任務(wù)技能技能點2Socket1Socket簡介工作于TCP/IP協(xié)議中應(yīng)用層和傳輸層之間的一種抽象層為Socket,在Android系統(tǒng)中,可以分為流套接字(streamsocket)和數(shù)據(jù)報套接字(datagramsocket)。而Socket中的流套接字將TCP協(xié)議作為其端對端協(xié)議,提供了一個可信賴的字節(jié)流服務(wù),數(shù)據(jù)報套接字使用UDP協(xié)議,提供數(shù)據(jù)打包發(fā)送服務(wù)。Socket工作機制中包括服務(wù)端和客戶端兩部分。在服務(wù)端有多個端口,每個端口由端口號標識。當(dāng)客戶端與服務(wù)端建立連接時,首先服務(wù)端打開端口監(jiān)聽來自客戶端的請求,然后客戶端通過IP地址和端口號向服務(wù)端發(fā)送連接請求,最后服務(wù)端接收請求,若連接成功,可以開始通信。任務(wù)技能2Socket實現(xiàn)方法當(dāng)客戶端、服務(wù)器端產(chǎn)生了對應(yīng)的Socket之后,程序無需再區(qū)分服務(wù)器、客戶端,而是通過各自的Socket進行通信。Socket提供了兩個方法獲取輸入流和輸出流,如表12.1所示。任務(wù)技能任務(wù)技能android實現(xiàn)socket簡單通信需要添加的權(quán)限:<!--允許應(yīng)用程序改變網(wǎng)絡(luò)狀態(tài)-->
<uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/>
<!--允許應(yīng)用程序改變WIFI連接狀態(tài)-->
<uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>
<!--允許應(yīng)用程序訪問有關(guān)的網(wǎng)絡(luò)信息-->
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--允許應(yīng)用程序訪問WIFI網(wǎng)卡的網(wǎng)絡(luò)信息-->
任務(wù)技能
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
<!--允許應(yīng)用程序完全使用網(wǎng)絡(luò)-->
<uses-permissionandroid:name="android.permission.INTERNET"/>
。任務(wù)技能技能點3HTTP1HTTP簡介超文本傳輸協(xié)議(HypertextTextTransferProtocol,簡稱HTTP)是應(yīng)用層協(xié)議,自1990年起,HTTP就已經(jīng)被應(yīng)用于www全球信息服務(wù)系統(tǒng)。HTTP是一種請求/響應(yīng)式的協(xié)議。一個客戶機與服務(wù)器建立連接后,會發(fā)送一個請求給服務(wù)器,這個服務(wù)器接到請求后,會給予客戶機相應(yīng)信息。HTTP的第一版是一種簡單的用于網(wǎng)絡(luò)間原始數(shù)據(jù)傳輸?shù)膮f(xié)議,HTTP/1.0由RFC1945定義,進一步的改進HTTP/0.9,它允許消息是類MIME信息格式。任務(wù)技能2HTTP請求HTTP包含了兩種請求方式:GET和POST。GET請求一般用于獲取或查詢資源信息,POST請求一般用于更新資源信息。
HttpGet、HttpPost分別實現(xiàn)了HttpRequest、HttpUriRequest接口,構(gòu)造方法如表12.2,12.3所示。任務(wù)技能任務(wù)技能Android提供了HttpURLConnection和HttpClient接口來開發(fā)HTTP程序。HttpURLConnection是Java的標準類,繼承自HttpConnection。它是抽象類,不能實例化對象,主要通過URL的openConnection()方法獲得HttpConnection接口的常用抽象方法如表12.4所示。任務(wù)技能3HttpClient開發(fā)Apache提供了一個HttpClient項目,能更好的處理向Web站點請求,包括處理Session、Cookie等細節(jié)問題,Apache是一個簡單的HTTP客戶端,可以發(fā)送HTTP請求,接收HTTP響應(yīng),執(zhí)行過程如圖12.3所示,但不會緩存服務(wù)器的響應(yīng),HttpClient接口的常用抽象方法如表12.5所示。任務(wù)技能任務(wù)技能使用HttpClient發(fā)送請求、接收請求步驟如下:(1)創(chuàng)建一個HttpClient對象。(2)若需要發(fā)送GET請求,則創(chuàng)建HttpGet對象,若需要發(fā)送POST請求,則創(chuàng)建HttpPost對象。(3)調(diào)用HttpClient對象的execute(HttpUriRequestrequest)方法來發(fā)送請求,執(zhí)行過后該方法返回一個HttpResponse。(4)調(diào)用HttpResponse的getEntity()方法可獲取HttpEntity對象,這個對象包裝了服務(wù)器的響應(yīng)內(nèi)容。技能點4Message(消息類)與Handler(消息處理類)1Message簡介當(dāng)Android平臺啟動一個應(yīng)用程序時會開啟一個主線程(界面UI線程),界面UI線程管理顯示的所有控件,并監(jiān)聽用戶點擊事件響應(yīng)用戶分發(fā)事件。在界面UI線程中一般不執(zhí)行耗時的操作,如聯(lián)網(wǎng)下載數(shù)據(jù)等,會出現(xiàn)ANR錯誤。AndroidUI線程是不安全的,所以只能在主線程中更新UI。任務(wù)技能任務(wù)技能android.os.Message是定義一個Message包含必要的描述和屬性數(shù)據(jù),并且此對象可以被發(fā)送給android.os.Handler處理。屬性字段:arg1、arg2、what、obj、replyTo等;其中arg1和arg2是用來存放整型數(shù)據(jù)的;what是用來保存消息標識;obj是Object類型的任意對象;replyTo是消息管理器,會關(guān)聯(lián)到一個Handler,Handler處理其中的消息。通常Message對象不是直接new出來的,調(diào)用Handler中的obtainMessage方法獲得Message對象如表12.6所示。任務(wù)技能2Handler簡介使用Handler處理消息時,Handler發(fā)揮兩個作用分別是:在新線程中發(fā)送消息,在主線程(界面線程)中獲取并處理消息。在實際的程序開發(fā)中,Handler類為開發(fā)人員提供了便捷的開發(fā)策略,在新線程(可以是多個新線程)中編寫消息發(fā)送的功能代碼,在主線程中統(tǒng)一接收、識別并處理。解決何時發(fā)送、何時處理的問題?,F(xiàn)把常用到的一些方法說明提供如表12.7所示。任務(wù)技能技能點5JSON1JSON簡介JSON是一種輕量級的數(shù)據(jù)交換格式,完全獨立于文本格式,易于讀者閱讀和編寫,同時也易于解析和生成。服務(wù)器請求成功后得到的數(shù)據(jù)大多是JSON類型的數(shù)據(jù),而不是客戶所需要的明確信息。任務(wù)技能2JSON解析方式JSON解析一般有三種方式,原生解析方式,JSON解析方式,和FastJson解析,F(xiàn)astJson是第三方框架,本次講解原生解析方式,步驟如下。第一步:將得到的數(shù)組JSON進行拆分,拆分為字符串形式。第二步:將字符串形式的JSON進行進一步拆分,將其中各個對象取出。任務(wù)技能任務(wù)實施第一步:在Eclipse中創(chuàng)建一個Android工程,命名為”火情監(jiān)測系統(tǒng)”,并設(shè)計界面。如圖12.2所示:第二步:在src文件夾中下建立MainActivity文件,并實現(xiàn)點擊“開始獲取”按鈕,建立Socket通信,獲取獲取災(zāi)情信息顯示到界面上。第三步:接收拋出信息,并顯示到界面上。第四步:實現(xiàn)點擊“回饋信息”按鈕,將災(zāi)情情況回饋到服務(wù)端并顯示到界面上。第五步:運行程序任務(wù)拓展【拓展目的】
熟悉并掌握使用線程實現(xiàn)網(wǎng)絡(luò)編程獲取信息?!就卣箖?nèi)容】本任務(wù)設(shè)計一款獲取服務(wù)器圖片的軟件,效果如圖12.5所示。【拓展步驟】1設(shè)計思路
點擊“獲取圖片”按鈕,獲取服務(wù)器圖片,將獲取到的圖片顯示到界面。2獲取服務(wù)器圖片并將其顯示到界面上。任務(wù)拓展任務(wù)總結(jié)本項目主要介紹了Android網(wǎng)絡(luò)編程的相關(guān)知識。Android支持JDK網(wǎng)絡(luò)編程中的ServiceSocket、Socket等
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 別墅整體裝修合同范本
- 2025屆高考生物備考教學(xué)設(shè)計:課時1 降低化學(xué)反應(yīng)活化能的酶
- 高考動員大會講話稿
- 股權(quán)用工合同范本
- 水泥合同范本
- Module 10 Unit 2 第一課時教學(xué)設(shè)計 2024-2025學(xué)年外研版八年級英語上冊
- Module 5 Unit1 Can you run fast?(教學(xué)設(shè)計)-2024-2025學(xué)年外研版(三起)英語四年級上冊
- 百尺河小學(xué)學(xué)校教學(xué)工作計劃
- 租雞棚合同范本
- 產(chǎn)品拼裝合同范本
- 橋梁施工流程圖
- 新人教鄂教版(2017)五年級下冊科學(xué)全冊教學(xué)課件
- TBPMA 0009-2021 生活飲用水二次供水水箱(池)清洗消毒技術(shù)規(guī)范
- 《產(chǎn)業(yè)基礎(chǔ)創(chuàng)新發(fā)展目錄(2021年版)》(8.5發(fā)布)
- YY/T 0729.4-2009組織粘合劑粘接性能試驗方法第4部分:傷口閉合強度
- GB/T 1040.3-2006塑料拉伸性能的測定第3部分:薄膜和薄片的試驗條件
- GB 4706.20-2004家用和類似用途電器的安全滾筒式干衣機的特殊要求
- 血管“斑塊”的風(fēng)險課件
- mks spectra介紹殘余氣體分析儀
- 中山大學(xué)抬頭信紙中山大學(xué)橫式便箋紙推薦信模板a
- 無形資產(chǎn)評估完整版課件
評論
0/150
提交評論