版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Learnmore.
Android服務(wù)(Service)本章概覽服務(wù)簡介多線程編程(回顧)子線程更新UI異步處理機(jī)制服務(wù)的定義啟動和停止服務(wù)服務(wù)與活動的通信服務(wù)與多線程服務(wù)簡介服務(wù)(Service)是Android中實(shí)現(xiàn)程序后臺運(yùn)行的解決方案,它比較適合去執(zhí)行不需要用戶交互界面并且耗時(shí)的任務(wù)服務(wù)與多線程
假如把耗時(shí)的任務(wù)放在主線程里運(yùn)行,會降低主線程響應(yīng)速度,所以一般來講我們需
要把服務(wù)放在子線程運(yùn)行多線程編程(回顧)publicMyTaskimplementsRunnable{@Overridepublicvoidrun(){//任務(wù)代碼}}//啟動線程newThread(newMyTask()).start();//簡寫方式newThread(newRunnable(){@Overridepublicvoidrun(){}}).start();子線程更新UI點(diǎn)擊取值按鈕后,假如執(zhí)行了一個很耗時(shí)的工作,那么此時(shí)會阻塞主線程,造成其他的按鈕或界面元素不能響應(yīng)(點(diǎn)不動。。。)解決方案:把耗時(shí)的任務(wù)放到單獨(dú)子線程中運(yùn)行,取值成功后把值賦到文本框里此時(shí)程序會報(bào)錯,根據(jù)錯誤提示我們會發(fā)現(xiàn)在子線程里面是不能修改UI的值,只有在主線程才可以修改!異步處理機(jī)制上一節(jié)中之所以會報(bào)錯是因?yàn)椴荒茉谧泳€程中更新UI,那么我們可以換個思路:在子線程取到數(shù)據(jù)后把消息發(fā)送給主線程,讓主線程更新UIAndroid中的Handler和Message正是為此需求而生Handler和Message用法//處理消息Handlerhandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){if(msg.what==1){//修改UIcontentText.setText("helloworld");}}};//發(fā)送消息
該代碼最好放在子線程中執(zhí)行Messagemsg=newMessage();msg.what=1;handler.sendMessage(msg);服務(wù)的定義1,繼承Service,實(shí)現(xiàn)其onCreate,onStartCommand,onDestroy方法onCreate:服務(wù)創(chuàng)建的時(shí)候調(diào)用(一次)onStartCommand:每次服務(wù)啟動后馬上執(zhí)行(每次啟動服務(wù)每次調(diào)用)onDestroy:服務(wù)銷毀的時(shí)候調(diào)用(一次)
啟動和停止服務(wù)啟動服務(wù):Intentintent=newIntent(Context對象,服務(wù)類);startService(intent);停止服務(wù):Intentintent=newIntent(Context對象,服務(wù)類);
stopService(intent);服務(wù)與活動的通信在活動中操作服務(wù)(或者獲取服務(wù)中的數(shù)據(jù)),離不開活動與服務(wù)的通信機(jī)制。Android
API提供了Binder來處理活動與服務(wù)的通信(綁定)機(jī)制。首先,需要創(chuàng)建一個類繼承Binder,類中的業(yè)務(wù)邏輯是自定義的:
publicclassTestBinderextendsBinder{privateintcount;publicvoidtestBinder(){count++;System.out.println("測試服務(wù)"+count);}
}然后自定義Service,并通過onBind方法返回Binder對象publicclassTestServiceInfoextendsService{
@OverridepublicvoidonCreate(){System.out.println("創(chuàng)建");}
@OverridepublicIBinderonBind(Intentintent){returnnewTestBinder();}}創(chuàng)建ServiceConnection對象,并實(shí)現(xiàn)onServiceConnected方法,用于在綁定成功后接收Binder對象,獲取到該對象后就可以隨時(shí)操作服務(wù)業(yè)務(wù)了ServiceConnectionconn=newServiceConnection(){@OverridepublicvoidonServiceDisconnected(ComponentNamecn){System.out.println("該方法會在服務(wù)崩潰或殺掉時(shí)調(diào)用");}@OverridepublicvoidonServiceConnected(ComponentNamecn,IBinderbinder){TestBindertb=(TestBinder)binder;tb.testBinder();System.out.println("服務(wù)成功綁定");}}綁定:bindService(intentInfo,conn,BI
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南平頂山市郟縣2025-2026學(xué)年上學(xué)期期末學(xué)情檢測七年級語文試卷(含答案)
- 貴州省黔東南苗族侗族自治州2025-2026學(xué)年八年級上學(xué)期1月期末考試道德與法治試卷(含答案)
- 金華浙江金華武義縣120院前急救指揮調(diào)度中心招聘編外人員筆試歷年參考題庫附帶答案詳解
- 衡陽2025年湖南衡陽市石鼓區(qū)招聘教師45人筆試歷年參考題庫附帶答案詳解
- 眉山2025年四川眉山仁壽縣教體系統(tǒng)面向縣內(nèi)考調(diào)教師(工作人員)29人筆試歷年參考題庫附帶答案詳解
- 溫州浙江溫州市環(huán)科院駕駛員招聘筆試歷年參考題庫附帶答案詳解
- 江西2025年江西南昌大學(xué)附屬口腔醫(yī)院招聘30人筆試歷年參考題庫附帶答案詳解
- 揚(yáng)州2025年江蘇揚(yáng)州高郵市醫(yī)療急救站招聘編外專業(yè)技術(shù)人員2人筆試歷年參考題庫附帶答案詳解
- 廣州2025年廣東廣州市南沙區(qū)事業(yè)單位招聘事業(yè)單位工作人員37人筆試歷年參考題庫附帶答案詳解
- 寧波浙江寧波工程學(xué)院招聘事業(yè)單位編制工作人員20人筆試歷年參考題庫附帶答案詳解
- 航空安保審計(jì)培訓(xùn)課件
- 高層建筑滅火器配置專項(xiàng)施工方案
- 2023-2024學(xué)年廣東深圳紅嶺中學(xué)高二(上)學(xué)段一數(shù)學(xué)試題含答案
- 2026元旦主題班會:馬年猜猜樂馬年成語教學(xué)課件
- 2025中國農(nóng)業(yè)科學(xué)院植物保護(hù)研究所第二批招聘創(chuàng)新中心科研崗筆試筆試參考試題附答案解析
- 反洗錢審計(jì)師反洗錢審計(jì)技巧與方法
- 檢驗(yàn)科安全生產(chǎn)培訓(xùn)課件
- 爆破施工安全管理方案
- 2026全國青少年模擬飛行考核理論知識題庫40題含答案(綜合卷)
- 2025線粒體醫(yī)學(xué)行業(yè)發(fā)展現(xiàn)狀與未來趨勢白皮書
- 靜壓機(jī)工程樁吊裝專項(xiàng)方案(2025版)
評論
0/150
提交評論