版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Android移動應(yīng)用設(shè)計與開發(fā)第6章服務(wù)6.1本地服務(wù)6.1.1兩種啟動方式6.1.2生命周期6.2遠程服務(wù)6.3服務(wù)小實例6.4本章小結(jié)本章導(dǎo)讀第6章服務(wù)Service是Android系統(tǒng)中的四大組件之一,它與Activity不同,它是不能與用戶交互的。它是一種長生命周期的,沒有可視化界面,運行于后臺的一種服務(wù)程序。6.1本地服務(wù)本地服務(wù)(LocalService)用于應(yīng)用程序內(nèi)部,可以實現(xiàn)應(yīng)用程序自己的一些耗時任務(wù),比如查詢升級信息、網(wǎng)絡(luò)傳輸,或者在一些場合需要在后臺執(zhí)行,比如播放音樂,并不占用應(yīng)用程序比如Activity所屬的線程,而是單開線程后臺執(zhí)行,這樣用戶體驗比較好。6.1.1兩種啟動方式Service有兩種啟動方式:1、通過Context.bindService(Intentintent,ServiceConnectionconn,intflags)
綁定時,bindService->onCreate()–>onBind();綁定Service需要三個參數(shù):intent:Intent對象,需要定義指向服務(wù)類。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()方法啟動,音樂服務(wù)會通過Intent來查看要播放哪首歌曲并開始播放。6.1.2生命周期兩種不同的啟動方式?jīng)Q定了服務(wù)的生命周期不完全相同,但這兩種服務(wù)過程并非完全對立的,有時候我們需要將它們結(jié)合起來使用。6.2遠程服務(wù)遠程服務(wù)(RemoteService)用于Android系統(tǒng)內(nèi)部的應(yīng)用程序之間??梢酝ㄟ^自己定義并暴露出來的接口進行程序操作。應(yīng)用程序建立一個到服務(wù)對象的連接,并通過那個連接來調(diào)用服務(wù)。連接以調(diào)用Context.bindService()方法建立,以調(diào)用Context.unbindService()關(guān)閉。多個應(yīng)用程序可以綁定至同一個服務(wù)。如果服務(wù)此時還沒有加載,Context.bindService()會先加載它。可被其他應(yīng)用程序復(fù)用,比如天氣預(yù)報服務(wù),其他應(yīng)用程序不需要再寫這樣的服務(wù),調(diào)用已有的即可。在Android系統(tǒng)中,一個進程通常不能直接訪問其他進程的內(nèi)存空間。如果要在不同的進程間傳遞對象,需要把對象解析成操作系統(tǒng)能夠理解的數(shù)據(jù)格式。Android采用AIDL(接口定義語言)的方式實現(xiàn)。AIDL是一種接口定義語言,用于約束兩個進程間的通訊規(guī)則,編譯器會生成它的代碼,從而實現(xiàn)Android設(shè)備上的兩個進程間通信(IPC)。6.3服務(wù)小實例MsgService類是如何完成“客戶端定時與服務(wù)器進行交互獲得最新的話題、私信以及好友的信息,并在界面中進行提示、刷新”大等功能的?
MsgService類繼承自Service類,實現(xiàn)了其中的onCreate、onStart、onBind與onDestroy方法,同時也實現(xiàn)了接口Runnable和其中的run()方法。onCreate方法初始化Service,并獲得當前登錄用戶的用戶名與密碼信息,為請求服務(wù)器的參數(shù)設(shè)置做好準備。onStart方法利用Runnable開啟一個線程,運行run方法,進行服務(wù)器的數(shù)據(jù)請求,在線程中請求是為了防止程序內(nèi)存占用過大。onBind方法是用來綁定服務(wù),在本項目中不要求服務(wù)綁定
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)副食品采購合同
- 2025年西寧晚報數(shù)字報刊版權(quán)保護與維權(quán)合同3篇
- 2025北京市房屋的買賣合同范本
- 二零二五年度鍋爐房運營維護外包合同3篇
- 2025年度裝配式建筑小型土建施工合同2篇
- 2025-2030年(全新版)中國潤腸茶行業(yè)競爭格局及未來投資趨勢分析報告
- 2025-2030年中國錫礦石產(chǎn)業(yè)前景展望及投資建議研究報告
- 2025-2030年中國鈷礦冶煉產(chǎn)業(yè)市場現(xiàn)狀分析及投資前景規(guī)劃研究報告
- 2025-2030年中國金銀花提取物行業(yè)發(fā)展動態(tài)及前景規(guī)劃研究報告
- 2025-2030年中國連鎖藥店行業(yè)發(fā)展現(xiàn)狀及前景趨勢分析報告
- 割接方案的要點、難點及采取的相應(yīng)措施
- 2025年副護士長競聘演講稿(3篇)
- 2025至2031年中國臺式燃氣灶行業(yè)投資前景及策略咨詢研究報告
- 原發(fā)性腎病綜合征護理
- 第三章第一節(jié)《多變的天氣》說課稿2023-2024學(xué)年人教版地理七年級上冊
- 2025年中國電科集團春季招聘高頻重點提升(共500題)附帶答案詳解
- 2025年度建筑施工現(xiàn)場安全管理合同2篇
- 建筑垃圾回收利用標準方案
- 2024年考研英語一閱讀理解80篇解析
- 樣板間合作協(xié)議
- 福建省廈門市2023-2024學(xué)年高二上學(xué)期期末考試語文試題(解析版)
評論
0/150
提交評論