freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于android的氣象信息采集系統畢業(yè)論文-在線瀏覽

2025-07-25 01:49本頁面
  

【正文】 接受者中。 在使用 Message時,我們可以通過 new Message()創(chuàng)建一個 Message實例,但是 Android更推薦我們通過 ()或者 ()獲取 Message對象 [3]。反之如果消息池中沒有可用的 Message實例,則根據給定的參數 new一個新 Message對象。 ( 2) MessageQueue消息隊列。存放并非實際意義的保存,而是將 Message對象以鏈表的方式串聯起來的 [4]。我們可以通過 ()獲取當前線程中的 MessageQueue。 在一個線程中,如果存在 Looper對象,則必定存在 MessageQueue對象,并且只存在一個 Looper對象和一個 MessageQueue對象。如果想讓我們新創(chuàng)建的 線程擁有 Looper對象時,我們首先應調用 ()方法,然后再調用 ()方法。 通過 Handler對象我們可以封裝 Message對象,然后通過 sendMessage(msg)把 Message對象添加到MessageQueue中;當 MessageQueue循環(huán)到該 Message時,就會調用該 Message對象對應的 handler對象的 handleMessage()方法對其進行處理。 消息機制的實現原理 ( 1) 首先啟動服務時將會調用 onCreate()方法 [5]。緊接著我們調用了start()方法,執(zhí)行該方法將會調用 HandlerThread對象的 run()方法,在 run()方法中,系統給線程添加的 Looper,同時調用了 Looper的 loop()方法,通過源碼我們可以看到 loop()方法是個死循環(huán) ,將會不停的從 MessageQueue對象中獲取 Message對象,如果 MessageQueue 對象中不存在 Message對象,則結束本次循環(huán),然后繼續(xù)循環(huán);如果存在 Message對象,則執(zhí)行 (msg),但是這個msg的 .target字段的值是什么呢?我們先暫時停止跟蹤源碼,返回到 onCreate()方法中。 ( 2) 執(zhí)行完 onStart()方法后,將執(zhí)行 onStartCommand()方法。緊接著調用 sendMessage(msg)方法,我們跟蹤源代碼,該方法將會調用 sendMessageDelayed(msg, 0)方法,而 sendMessageDelayed()方法又會調用 sendMessageAtTime(msg, () + delayMillis)方法,在該方法中我們要注意該句代碼 = this, msg的 target指向了 this,而this就是 ServiceHandler對象,因此 msg的 target字段指向了 ServiceHandler對象,同時該方法又調用 MessageQueue 的 enqueueMessage(msg, uptimeMillis)方法 該方法主要的任務就是把 Message對象的添加到 MessageQueue中。 onStartCommand()執(zhí)行完畢后我們的 Service中的方法就執(zhí)行完畢了,那么 handleMessage()是怎么調用的呢?在前面分析的 loop()方法中,我們當時不知道 msg的 target字段代碼什么,通過上面分析現在我們知道它代表 ServiceHandler對象, (msg)。在該方法將根據 what字段的值判斷執(zhí)行哪段代碼。而繞的這一圈,也正好幫助我們將同步操作變成了異步操作。 Android完全支持 DOM解析。 DOM 實現時首先為 XML 文檔的解析定義一組接口,解析器讀入整個文檔,然后構造一個駐留內存的樹結構,這樣代碼就可以使用 DOM接口來操作這個樹結構 。 Element:該接口繼承 Node接口,提供了獲取修改 XML元素名字和屬性的方法。 NodeList:提供獲得節(jié)點個數和當前節(jié)點的方法。 DOMParser:該類是 Apache的 Xcrccs中的 DOM解析器類,可直接解析 XML文件。但是,因為 DOM需要將 XML文件的所有內容讀取到內存中,所以內存的消耗比較大。 ( 3) DOM解析流程 DOM解析的流程如圖 23所示: X M L 文 件I t e mI t e mD a t a I DC i t y N a m eW e a t h e rI D城 市名天 氣信 息 圖 23 DOM 解析技術 SAX 解析技術 ( 1) SAX的工作原理 [8] SAX 的工作原理簡單的說就是對文檔進行順序掃描,當掃描到文檔開始與結束、元素開始與結束、文檔結束等地方時通知事件處理函數,由事件處理函數做相應的動作,然后繼續(xù)同樣的掃描,直至文檔結束。 ContentHandler:定義與文檔本身關聯的事件(例如開始和結束標記)。 DTDHandler:定義與 DTD 相關聯的事件。如果需要對 DTD進行語法分析,請使用可選的 DeclHandler。不是所有的語法分析器都支持它。在大多數的情況下,為應用程序擴展 DefaultHandler并覆蓋相關的方法要比直接實現一個接口更容易。因為 SAX是以事件作為解析 XML文件的模式,它將 XML文件轉化成為一系列的事件,由不同的事件處理器來決定如何處理 [9]。這樣對于有限的Android內存更有效,而且 Android提供了一種傳統的 SAX使用方法以及一個便捷的 SAX包裝器。當某個元素開始時,我們可以調用 ()從 XML文檔中提取所有字符數據 [10]。 ( 2) XML pull的接口和類 XmlPullParser: XML pull解析器是一個在 XMLPULL V1 API中提供了定義解析功能的接口。 XmlPullParserFactory:這個類用于在 XMLPULL V1 API中創(chuàng)建 XML pull解析器。 ( 3) XML pull的接口和類 XML pull的解析流程如圖 25所示: StartDocumentEndDocumentEndTagStartTag 圖 25 XML pull 解析流程 3 系統開發(fā)工具 MyEclipse Eclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。幸運的是, Eclipse 附帶了一個標準的插件集,包括 Java 開發(fā)工具( Java Development Tools, JDT)。 Eclipse 還包括插件開發(fā)環(huán)境 (plugin Development Environment, PDE),這個組件主要針對希望擴展 Eclipse 的軟件開發(fā)人員,因為它允許他們構建與 Eclipse 環(huán)境無縫集成的工具。 Eclipse是一款非常優(yōu)秀的開源 IDE,非常適合 Java開發(fā),由于支持插件技術,受到了越來越多的開發(fā)者的歡迎。 Android SDK Android廣泛支持 GSM(全球通), DEGE和 3G的 語音與數據業(yè)務,支持接收語言呼叫和 SMS(短信消息服務),支持數據存儲共享和 IPC(進程間通信)消息機制, 為地理位置服務(如 GPS)、谷歌地圖服 務提供易于使用的 API函數庫,提供組件復用和內置程序格式,支持的格式有 MPEG4, H264, MP3, AAC, AMR,JPG, PNG和 GIF,為 2D和 3D圖像處理的專用的 API庫函數。與 Java和 .NET運行 時不同, Android運行時還可以管理進程的生命周期。 Android進程的優(yōu)先級并不是固定的,而是根據進程是否在前臺或是否與用戶交互而不斷變化的。 Android將界面設計與程序邏輯分離開來,使用 XML文件對界面布局進行描述,有利于界面的修改和維護。 Android支持高效 、快速的數據存儲方式,包括快速數據儲存方式 SharedPreferences、文件存儲和輕量級的關系數據庫 SQLite, 應用程序可以使用合適的方法對數據進行保存和訪問。 集成開發(fā)環(huán)境的搭建 JAVA JDK 的安裝配置 ( 1) 右鍵單擊 “ 計算機 ” ,選擇 “ 屬性 ” 菜單項,點擊 “ 高級系統設置 ” ,進入 “ 高級 ” 選項卡,選 擇 “ 環(huán)境變量 ” ,找到系統變量的 “Path” 變量名(如果沒有就新建一個名為 “Path” 的變量),點擊“ 編輯 ” 按鈕,添加 JDK安裝目錄中 “bin” 文件夾路徑,如圖 31所示。 圖 31 設置 JAVA 路徑 ( 2) 再找到 “CLASSPATH” 變量(如果沒有,同樣可以新建),輸入 JDK安裝目錄中 “l(fā)ib” 以及 “demo”的路徑,如圖 32所示 ,單擊 “ 確定 ” 按鈕完成。點擊開始 —— 運行,輸入 “CMD” ,打開命令行模式,鍵入命令 “java version” ,檢查 JDK是否安裝成功,如果運行結果如圖 33所示,即表示安裝成功。” 隔開。 安裝完后就可進到 Android SDK 下載更新 package了 注意有 android出到現在所有的 lever 選擇需要安裝的 更新。 自此, Android的集成開發(fā)環(huán)境搭建完成。 系統需求分析 本系統主要要實現以下幾個功能: ( 1)天氣查詢。根據不同產品的查詢要求,可以將產品顯示成圖片、文字等不同的形式。 ( 2)信息反饋。反饋信息的操作步驟以引導式的為主。此處主要利用平臺便捷的反饋功 能為廣大信息員提供生產生活的信息交流與統計調查服務,為相關部門提供獲取更為廣泛的信息。用戶可以在終端程序的選項功能鍵中選擇更多其他功能,包括:培訓、手機定位、電話連線、個人信息查詢、 wap 網站鏈接及系統設置。此處提供了手機終端程序的幫助文檔和操作指南。 功能模塊設計 從功能需求上分析,可以將整個應用系統劃分為四個模塊,分別是用戶界面 、后臺服務、信息反饋模塊、數據庫適配器,各個模塊之間的關系如圖 41所示: 用 戶 界 面服 務 器 后 臺 服 務 ( s e r v i c e )根 據 城 市 名 訪 問獲 得 相 對 應 的 X M L 文 件氣 象 信 息 反 饋 資 源 適 配 器通 過 短 信 的 形 式傳 遞 信 息用 S A X 解 析 x m l 文 件傳 給 資 源 適 配 器將 解 析 后 的 信 息 返 還 給 用 戶用 戶 登 錄輸 入 想 要查 詢 的 城 市 名編 輯 氣 象 信 息驗 證 用 戶 名 密 碼 圖 51 模塊結構圖 從模塊結構圖可以看出,后臺服務是整個應用程序的核心,主要功能是負責從服務器端下載氣象數據,信息員培訓信息等資源。 用戶界面根據用戶的輸入將 Intent 傳入后臺,向后臺服務獲得服務器端下載下來的并解析過后的文件,用戶界面還會調用數據庫適配器,向 服務器 中寫入,讀取資源。 數據庫適配器封裝了所有對 服務器 操作的方法,用戶界面和后臺服務會調用它實現數據庫操作。 Android 項目通過 文件找到相應資源對應的 id值進行加載。所有在程序開發(fā)階段可以被調用的資源都保存在這些目錄中,在 /res 下還包含以下文件目錄。 /res/layout 目錄中保存的是布局文件,它是一個標簽的樹,任何一個標簽都是 View 類的名字。包括在你的代碼中自定義的 View類。這個模式的設計靈感來自于 Web開發(fā)。 /res/values 目錄中保存的是用來定義的字符串和顏色的文件,可以作為國際化,在本項目中將界面所要顯示的中文信息經過其目錄下的 。為了便于測試,我用了谷歌所提供的 API來實現天氣信息的實時 查詢 [11]。 Bundle bundle = new Bundle()。 (check, false)。 ()。 break。 定義一個 Handler對象,用于獲取定時器中線程所發(fā)出的 message,根據不同的 message,執(zhí)行不同的操作。 } if (() == ) { ()。 然后, service 進行后臺的數據獲取與解析,具體代碼實現見下面的天氣查詢功能的實現。 ImageSwitcher類必須設置一個 ViewFactory,主要用來將顯示的圖片和父窗口區(qū)分開來,因此需要實現 ,通過 makeView()方法來顯示圖片,這里會返回一個 ImageView對象,而方法 setImageResourse用來顯示指定的圖片資源。 WeatherUI的核心代碼如下: 設置退出按鈕 (new () { public void onClick(View arg0) { ...//退出操作 })。 } })。 initView(0)。 } public void onNothingSelected(AdapterView? arg0) {} })。 } public View makeView() { ImageView img = new ImageView(this)。 } 以下是用來顯示時間的代碼: Handler handler = new Handler() { Override public void handleMessage(Message msg) { (())。 private class ShowTime extends Thread { public void run() { while (true) { try {(1000)。} (0)。然后就會生成如圖5
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1