項目六界面數(shù)據(jù)的實現(xiàn)任務(wù)2農(nóng)業(yè)大棚中風(fēng)扇控制_第1頁
項目六界面數(shù)據(jù)的實現(xiàn)任務(wù)2農(nóng)業(yè)大棚中風(fēng)扇控制_第2頁
項目六界面數(shù)據(jù)的實現(xiàn)任務(wù)2農(nóng)業(yè)大棚中風(fēng)扇控制_第3頁
項目六界面數(shù)據(jù)的實現(xiàn)任務(wù)2農(nóng)業(yè)大棚中風(fēng)扇控制_第4頁
項目六界面數(shù)據(jù)的實現(xiàn)任務(wù)2農(nóng)業(yè)大棚中風(fēng)扇控制_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Android物聯(lián)網(wǎng)應(yīng)用程序開發(fā)資源轉(zhuǎn)化系統(tǒng)教材

任務(wù)實現(xiàn)知識準(zhǔn)備任務(wù)目標(biāo)目錄

任務(wù)2農(nóng)業(yè)大棚中的風(fēng)扇控制項目6界面數(shù)據(jù)更新的實現(xiàn)

本任務(wù)使用項目2任務(wù)8中的設(shè)計界面,實現(xiàn)使用消息發(fā)送-接收機制實現(xiàn)在獲取的傳感器溫度超出系統(tǒng)設(shè)定的臨界值后,風(fēng)扇自動轉(zhuǎn)動。在任務(wù)1技能掌握的基礎(chǔ)上,利用Handler消息傳遞機制來實現(xiàn)本功能。

【任務(wù)目標(biāo)】 1.掌握如何創(chuàng)建及開啟線程2.掌握如何讓線程休眠3.掌握進(jìn)程與線程的區(qū)別1.線程簡介

【知識準(zhǔn)備】在現(xiàn)實生活中,很多事情都是同時進(jìn)行的。對于這種可以同時進(jìn)行的任務(wù),在Android中,可以用線程來表示,每個線程完成一個任務(wù),并與其他線程同時執(zhí)行,這種機制稱為多線程。下面就來介紹如何創(chuàng)建線程、開啟線程、讓線程休眠和中斷線程。創(chuàng)建線程在Android中,提供了兩種創(chuàng)建線程的方法:◆需要從Java.lang.Thread類派生一個新的線程類,重載它的run()方法;◆實現(xiàn)Runnalbe接口,重載Runnalbe接口中的run()方法。1.線程簡介

【知識準(zhǔn)備】(1)通過Thread類的構(gòu)造方法創(chuàng)建線程Thread(Runnablerunnable)該構(gòu)造方法的參數(shù)runnable可以通過創(chuàng)建一個Runnable類的對象并重寫其run()方法來實現(xiàn),例如,要創(chuàng)建一個名稱為thread的線程,可以使用下面的代碼:Threadthread=newThread(newRunnable(){ @Override publicvoidrun(){ //TODOAuto-generatedmethodstub } });1.線程簡介

【知識準(zhǔn)備】(2)通過實現(xiàn)Runnable接口創(chuàng)建線程在Android中,還可以通過實現(xiàn)Runnable接口來創(chuàng)建線程。實現(xiàn)Runnable接口的語法格式如下:publicclassClassNameextendsObjectimplementsRunnable當(dāng)一個類實現(xiàn)Runnable接口后,還需要實現(xiàn)其run()方法,在run()方法中,可以編寫要執(zhí)行的操作的代碼。1.線程簡介

【知識準(zhǔn)備】要創(chuàng)建一個實現(xiàn)了Runnable接口的Activity,可以使用下面的代碼:publicclassMainActivityextendsActivityimplementsRunnable{

@Override protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); setContentView(R.layout.main); }

@Override publicvoidrun(){ //TODOAuto-generatedmethodstub }}1.線程簡介

【知識準(zhǔn)備】1)開啟線程當(dāng)線程成功創(chuàng)建后,還需要開啟線程,線程才能執(zhí)行。Thread類利用start()方法用于開啟線程,其語法格式如下:start()2)讓線程休眠當(dāng)線程在某種情況下需要暫停執(zhí)行時,Thread類利用sleep()方法讓線程休眠指定的時間。sleep()方法的語法格式如下:sleep(longtime)//括號中的參數(shù)為指定休眠的時間,單位為毫秒3)中斷線程當(dāng)線程在某種情況下需要中斷執(zhí)行時,可以使用Thread類提供的interrupt()方法來實現(xiàn)。其具體語法格式如下:Interrupt()//括號中的參數(shù)為指定休眠的時間,單位為毫秒2.進(jìn)程與線程的區(qū)別

【知識準(zhǔn)備】個程序第一次啟動的時候,Android會啟動一個LINUX進(jìn)程和一個主線程。默認(rèn)的情況下,所有該程序的組件都將在該進(jìn)程和線程中運行。同時,Android會為每個應(yīng)用程序分配一個單獨的LINUX用戶。Android會盡量保留一個正在運行進(jìn)程,只在內(nèi)存資源出現(xiàn)不足時,Android會嘗試停止一些進(jìn)程從而釋放足夠的資源給其他新的進(jìn)程使用,也能保證用戶正在訪問的當(dāng)前進(jìn)程有足夠的資源去及時地響應(yīng)用戶的事件。我們可以將一些組件運行在其他進(jìn)程中,并且可以為任意的進(jìn)程添加線程。組件運行在哪個進(jìn)程中是在manifest文件里設(shè)置的,其中<Activity>,<Service>,<receiver>和<provider>都有一個process屬性來指定該組件運行在哪個進(jìn)程之中。我們可以設(shè)置這個屬性,使得每個組件運行在它們自己的進(jìn)程中,或是幾個組件共同享用一個進(jìn)程,或是不共同享用。<application>元素也有一個process屬性,用來指定所有的組件的默認(rèn)屬性。2.進(jìn)程與線程的區(qū)別

【知識準(zhǔn)備】Android中的所有組件都在指定的進(jìn)程中的主線程中實例化的,對組件的系統(tǒng)調(diào)用也是由主線程發(fā)出的。每個實例不會建立新的線程。對系統(tǒng)調(diào)用進(jìn)行響應(yīng)的方法——例如負(fù)責(zé)執(zhí)行用戶動作的View.onKeyDown()和組件的生命周期函數(shù)——都是運行在這個主線程中的。這意味著當(dāng)系統(tǒng)調(diào)用這個組件時,這個組件不能長時間的阻塞主線程。例如進(jìn)行網(wǎng)絡(luò)操作時或是更新UI時,如果運行時間較長,就不能直接在主線程中運行,因為這樣會阻塞這個進(jìn)程中其他的組件,我們可以將這樣的組件分配到新建的線程中或是其他的線程中運行。

Android一共有五個級別:2.進(jìn)程與線程的區(qū)別

【知識準(zhǔn)備】前臺進(jìn)程前臺進(jìn)程是用戶當(dāng)前正在使用的進(jìn)程。只有一些前臺進(jìn)程可以在任何時候都存在。他們是最后一個被結(jié)束的,當(dāng)內(nèi)存低到根本連他們都不能運行的時候。一般來說,在這種情況下,設(shè)備會進(jìn)行內(nèi)存調(diào)度,中止一些前臺進(jìn)程來保持對用戶交互的響應(yīng)??梢娺M(jìn)程可見進(jìn)程不包含前臺的組件但是會在屏幕上顯示一個可見的進(jìn)程是的重要程度很高,除非前臺進(jìn)程需要獲取它的資源,不然不會被中止。2.進(jìn)程與線程的區(qū)別

【知識準(zhǔn)備】服務(wù)進(jìn)程運行著一個通過startService()方法啟動的service,這個service不屬于上面提到的2種更高重要性的。service所在的進(jìn)程雖然對用戶不是直接可見的,但是他們執(zhí)行了用戶非常關(guān)注的任務(wù)(比如播放mp3,從網(wǎng)絡(luò)下載數(shù)據(jù))。只要前臺進(jìn)程和可見進(jìn)程有足夠的內(nèi)存,系統(tǒng)不會回收他們。2.進(jìn)程與線程的區(qū)別

【知識準(zhǔn)備】后臺進(jìn)程運行著一個對用戶不可見的activity(調(diào)用過onStop()方法).這些進(jìn)程對用戶體驗沒有直接的影響,可以在服務(wù)進(jìn)程、可見進(jìn)程、前臺進(jìn)程需要內(nèi)存的時候回收。通常,系統(tǒng)中會有很多不可見進(jìn)程在運行,他們被保存在LRU(leastrecentlyused)列表中,以便內(nèi)存不足的時候被第一時間回收。如果一個activity正確的執(zhí)行了它的生命周期,關(guān)閉這個進(jìn)程對于用戶體驗沒有太大的影響。2.進(jìn)程與線程的區(qū)別

【知識準(zhǔn)備】空進(jìn)程未運行任何程序組件。運行這些進(jìn)程的唯一原因是作為一個緩存,縮短下次程序需要重新使用的啟動時間。系統(tǒng)經(jīng)常中止這些進(jìn)程,這樣可以調(diào)節(jié)程序緩存和系統(tǒng)緩存的平衡。2.進(jìn)程與線程的區(qū)別

【知識準(zhǔn)備】2.單線程模型線程在代碼是使用標(biāo)準(zhǔn)的javaThread對象來建立,那么在Android系統(tǒng)中提供了一系列方便的類來管理線程——Looper用來在一個線程中執(zhí)行消息循環(huán),Handler用來處理消息,HandlerThread創(chuàng)建帶有消息循環(huán)的線程。具體可以看下面的詳細(xì)介紹。當(dāng)一個程序第一次啟動時,Android會同時啟動一個對應(yīng)的主線程(MainThread),主線程主要負(fù)責(zé)處理與UI相關(guān)的事件,如用戶的按鍵事件,用戶接觸屏幕的事件以及屏幕繪圖事件,并把相關(guān)的事件分發(fā)到對應(yīng)的組件進(jìn)行處理。所以主線程通常又被叫做UI線程。在開發(fā)Android應(yīng)用時必須遵守單線程模型的原則:AndroidUI操作并不是線程安全的并且這些操作必須在UI線程中執(zhí)行。

【任務(wù)實現(xiàn)】1.在Eclipse下創(chuàng)建一個Android項目,命名為AndroidDemo6_2,將單元2任務(wù)8的界面導(dǎo)入到本項目中,為本任務(wù)界面添加3個TextView控件用于顯示溫濕度等信息。2.在Src文件夾中新建BasePort.java和FourInput.java文件完成數(shù)據(jù)的讀取與串口的打開。3.在MainActivity.java中定義控件,并新建initView()方法完成控件的初始化4.實例化一個線程對象完成當(dāng)邏輯開啟時每隔1.5秒更新一次數(shù)值。

【任

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論