版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Android移動應用設計與開發(fā)第6章服務6.1本地服務6.1.1兩種啟動方式6.1.2生命周期6.2遠程服務6.3服務小實例6.4本章小結(jié)本章導讀第6章服務Service是Android系統(tǒng)中的四大組件之一,它與Activity不同,它是不能與用戶交互的。它是一種長生命周期的,沒有可視化界面,運行于后臺的一種服務程序。6.1本地服務本地服務(LocalService)用于應用程序內(nèi)部,可以實現(xiàn)應用程序自己的一些耗時任務,比如查詢升級信息、網(wǎng)絡傳輸,或者在一些場合需要在后臺執(zhí)行,比如播放音樂,并不占用應用程序比如Activity所屬的線程,而是單開線程后臺執(zhí)行,這樣用戶體驗比較好。6.1.1兩種啟動方式Service有兩種啟動方式:1、通過Context.bindService(Intentintent,ServiceConnectionconn,intflags)
綁定時,bindService->onCreate()–>onBind();綁定Service需要三個參數(shù):intent:Intent對象,需要定義指向服務類。conn:ServiceConnection接口對象,創(chuàng)建該對象要實現(xiàn)它的onServiceConnected()和
onServiceDisconnected()來判斷連接成功或者是斷開連接。flags:創(chuàng)建Service模式,一共有以下三種模式:Service.BIND_AUTO_CREATE:指定綁定的時候自動創(chuàng)建Service,最常使用的模式Service.BIND_DEBUG_UNBIND:測試綁定的時候,進行調(diào)試所用Service.BIND_NOT_FOREGROUND:不在前臺進行綁定6.1.1兩種啟動方式
解綁定,unbindService–>onUnbind()–>onDestory();
此時如果調(diào)用者(如Activity)直接退出,Service由于與調(diào)用者綁定在一起,則Service會隨著調(diào)用者一同停止。2、通過Context.startService(Intentintent)啟動時,startService–>onCreate()–>onStart();停止時,stopService–>onDestroy();6.1.2生命周期Service生命周期一般有兩種運行模式,這兩種模式并不是完全分離的:
該模式下,Service是通過Context.startService()方法開始,以Context.stopService()方法停止。
外部程序建立一個到Service的連接,通過這個連接來操作Service。建立連接開始于Context.bindService(),結(jié)束于Context.unbindService()。多個客戶端可以綁定到同一個Service,如果Service沒有啟動,可以通過Context.bindService()啟動它。在程序沒有停止Service或者Service自己停止的情況下,Service將一直在后臺運行。1可以通過接口被外部程序調(diào)用。26.1.2生命周期Service的生命周期:12整個生命周期活動生命周期從onCreate()開始,到onDestroy()結(jié)束,跟Activity很類似。Service生命周期在onCreate()中執(zhí)行初始化操作,在onDestroy()中釋放所有用到的資源。開始于onStart(),或者開始于onBind()方法。在音樂播放器中,使用Context.startService()方法啟動,音樂服務會通過Intent來查看要播放哪首歌曲并開始播放。6.1.2生命周期兩種不同的啟動方式?jīng)Q定了服務的生命周期不完全相同,但這兩種服務過程并非完全對立的,有時候我們需要將它們結(jié)合起來使用。6.2遠程服務遠程服務(RemoteService)用于Android系統(tǒng)內(nèi)部的應用程序之間??梢酝ㄟ^自己定義并暴露出來的接口進行程序操作。應用程序建立一個到服務對象的連接,并通過那個連接來調(diào)用服務。連接以調(diào)用Context.bindService()方法建立,以調(diào)用Context.unbindService()關(guān)閉。多個應用程序可以綁定至同一個服務。如果服務此時還沒有加載,Context.bindService()會先加載它??杀黄渌麘贸绦驈陀?,比如天氣預報服務,其他應用程序不需要再寫這樣的服務,調(diào)用已有的即可。在Android系統(tǒng)中,一個進程通常不能直接訪問其他進程的內(nèi)存空間。如果要在不同的進程間傳遞對象,需要把對象解析成操作系統(tǒng)能夠理解的數(shù)據(jù)格式。Android采用AIDL(接口定義語言)的方式實現(xiàn)。AIDL是一種接口定義語言,用于約束兩個進程間的通訊規(guī)則,編譯器會生成它的代碼,從而實現(xiàn)Android設備上的兩個進程間通信(IPC)。6.3服務小實例MsgService類是如何完成“客戶端定時與服務器進行交互獲得最新的話題、私信以及好友的信息,并在界面中進行提示、刷新”大等功能的?
MsgService類繼承自Service類,實現(xiàn)了其中的onCreate、onStart、onBind與onDestroy方法,同時也實現(xiàn)了接口Runnable和其中的run()方法。onCreate方法初始化Service,并獲得當前登錄用戶的用戶名與密碼信息,為請求服務器的參數(shù)設置做好準備。onStart方法利用Runnable開啟一個線程,運行run方法,進行服務器的數(shù)據(jù)請求,在線程中請求是為了防止程序內(nèi)存占用過大。onBind方法是用來綁定服務,在本項目中不要求服務綁定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州財經(jīng)職業(yè)學院《三維建模與渲染》2023-2024學年第一學期期末試卷
- 2025年河北建筑安全員-B證考試題庫附答案
- 2025山西建筑安全員-C證考試題庫
- 廣州中醫(yī)藥大學《紡織信息管理》2023-2024學年第一學期期末試卷
- 2025河北省安全員-A證考試題庫及答案
- 廣州醫(yī)科大學《管理學理論教學》2023-2024學年第一學期期末試卷
- 2025安徽建筑安全員《A證》考試題庫
- 2025年重慶市安全員考試題庫
- 電力電子技術(shù)課件軟開關(guān)技術(shù)
- 《英語倒裝句》課件
- (一模)株洲市2025屆高三教學質(zhì)量統(tǒng)一檢測 英語試卷
- 社區(qū)意識形態(tài)工作責任制實施細則模版(2篇)
- 礦業(yè)公司規(guī)章制度匯編
- 介入導管室護士長職責
- 《國家課程建設》課件
- 四川省南充市2023-2024學年高一上學期期末考試 歷史 含解析
- 2024-2025學年湖北省武漢市華中師大一附中高三上學期期中英語試題及答案
- 浙江省衢州市2023-2024學年高一上學期1月期末數(shù)學試題 含解析
- 大學老師工作述職報告
- 中國風中國武術(shù)武術(shù)介紹PPT模板課件
- 兗州一中“循環(huán)大課堂教學模式”
評論
0/150
提交評論