版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
移動(dòng)平臺(tái)軟件設(shè)計(jì)7
Service7.1什么是Service7.2Service類型7.3本地服務(wù)示例7.1什么是ServiceService是Android系統(tǒng)四大組件之一,它是一種長生命周期的,沒有可視化界面,運(yùn)行于后臺(tái)的一種服務(wù)程序。比如播放音樂的時(shí)候,有可能想邊聽音樂邊干些其他事情,當(dāng)退出播放音樂的應(yīng)用,如果不用Service,我們就聽不到歌了,所以這時(shí)候得用到Service?!痉祷亍?.2Service類型(1)本地服務(wù):用于應(yīng)用程序內(nèi)部(同一個(gè)apk內(nèi)被調(diào)用)服務(wù)可以調(diào)用startService()啟動(dòng),調(diào)用stopService()結(jié)束。在服務(wù)內(nèi)部可以調(diào)用Service.stopSelf()或Service.stopSelfResult()來自己停止。無論調(diào)用了多少次startService(),都只需調(diào)用一次stopService()來停止。Service類型(2)遠(yuǎn)程服務(wù):用于應(yīng)用程序之間(被另一個(gè)apk調(diào)用)定義服務(wù)接口并把接口暴露出來,以便其他應(yīng)用進(jìn)行操作,比如一個(gè)天氣預(yù)報(bào)服務(wù)??蛻舳私⒌椒?wù)對(duì)象的連接,并通過那個(gè)連接來調(diào)用服務(wù)。通過調(diào)用bindService()方法建立連接并啟動(dòng)服務(wù),調(diào)用unbindService()關(guān)閉連接。多個(gè)客戶端可以綁定至同一個(gè)服務(wù)。如果服務(wù)此時(shí)還沒有加載,bindService()會(huì)先加載它。遠(yuǎn)程服務(wù)提供給可被其他應(yīng)用復(fù)用。Service生命周期【返回】stopService()或stopSelf()7.3本地服務(wù)示例--音樂播放服務(wù)主要步驟:1.準(zhǔn)備工作2.創(chuàng)建MusicService3.主程序4.功能改進(jìn)1.準(zhǔn)備工作在res文件夾下新建raw文件夾將音樂文件import到raw文件夾中備注:res/raw文件夾通常存放資源文件,如音頻、視頻等資源res/raw中的文件會(huì)被映射到R.java文件中,訪問的時(shí)候直接使用資源ID,即R.raw.某個(gè)資源id;【返回】文件名不要出現(xiàn)中文和空格,也不要以全數(shù)字命名2.創(chuàng)建MusicService然后命名為MusicServiceMusicService代碼框架publicclassMusicServiceextendsService{publicMusicService(){}@OverridepublicIBinderonBind(Intentintent){thrownewUnsupportedOperationException("Notyetimplemented");}}MusicService添加代碼publicclassMusicServiceextendsService{
MediaPlayermPlayer;//定義音樂播放器變量@OverridepublicvoidonCreate(){super.onCreate();mPlayer=MediaPlayer.create(getApplicationContext(),R.raw.start);
//創(chuàng)建音樂播放器mPlayer.setLooping(true);//設(shè)置可以重復(fù)播放
}@OverridepublicvoidonStart(Intentintent,intstartId){super.onStart(intent,startId);
mPlayer.start();}@OverridepublicvoidonDestroy(){super.onDestroy();
mPlayer.stop();}@OverridepublicIBinderonBind(Intentintent){thrownewUnsupportedOperationException("Notyetimplemented");}}【返回】onBind保留,不要?jiǎng)h除由startService()觸發(fā)由stopService()或stopSelf()觸發(fā)3.主程序(主要代碼)Buttonbt1=(Button)findViewById(R.id.button1);Buttonbt2=(Button)findViewById(R.id.button2);View.OnClickListeneronclicklistener=newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){
Intentintent=newIntent(MainActivity.this,MusicService.class);switch(v.getId()){caseR.id.button1:
startService(intent);//啟動(dòng)服務(wù) break;caseR.id.button2:
stopService(intent);//停止服務(wù) break;
}}};bt1.setOnClickListener(onclicklistener);bt2.setOnClickListener(onclicklistener);【返回】顯示啟動(dòng)Service4.功能改進(jìn)增加暫停、重播、結(jié)束(停止服務(wù))功能思路:通過在Intent傳遞參數(shù)值給Service假設(shè)參數(shù)值:1--播放2--暫停3--重播0--結(jié)束(服務(wù))-1--退出(結(jié)束服務(wù)和Activity)主界面activity_main.xml(GridLayout布局)<GridLayoutxmlns:android=""android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_gravity="center_horizontal"android:columnCount="6"><Buttonandroid:id="@+id/play"android:layout_column="0"android:layout_gravity="left|top"android:layout_row="0"android:text="播放"/><Buttonandroid:id="@+id/pause"android:layout_column="1"android:layout_gravity="left|top"android:layout_row="0"android:text="暫停"/><Buttonandroid:id="@+id/replay"android:layout_column="2"android:layout_gravity="center_horizontal|top"android:layout_row="0"android:text="重播"/><Button
android:id="@+id/stopservice"android:layout_column="3"android:layout_gravity="left|top"android:layout_row="0"android:text="結(jié)束"/><Button
android:id="@+id/exit"android:layout_column="5"android:layout_gravity="left|top"android:layout_row="0"android:text="退出"/></GridLayout>MusicService主要代碼publicclassMusicServiceextendsService{
//定義音樂播放器變量MediaPlayermPlayer;@OverridepublicvoidonCreate(){super.onCreate();if(mPlayer==null){mPlayer=MediaPlayer.create(getApplicationContext(),R.raw.tick);mPlayer.setLooping(true);}}@OverridepublicvoidonDestroy(){super.onDestroy();if(mPlayer!=null){mPlayer.stop();
mPlayer.release();
}}MusicService代碼@OverridepublicvoidonStart(Intentintent,intstartId){super.onStart(intent,startId);if(intent!=null){
Bundlebundle=intent.getExtras();intop=bundle.getInt("op");switch(op){case1:if(!mPlayer.isPlaying()){
mPlayer.start();
}break;case2:if(mPlayer.isPlaying()){
mPlayer.pause();
}break; case3:if(mPlayer!=null){
mPlayer.stop();try{
mPlayer.prepare();}catch(IOExceptionex){ex.printStackTrace();
}
mPlayer.seekTo(0);mPlayer.start();
}break;case0:
stopSelf();break;}}//endswitch}//endif}//endstart播放暫停重播停止服務(wù)(服務(wù)自己結(jié)束服務(wù))在調(diào)用stop后如果需要再次通過start進(jìn)行播放則需要先調(diào)用prepare函數(shù)(要trycatch)取出BundleMainActivity主要代碼Buttonbt1=(Button)findViewById(R.id.play);Buttonbt2=(Button)findViewById(R.id.pause);Buttonbt3=(Button)findViewById(R.id.replay);Buttonbt4=(Button)findViewById(R.id.stopservice);Buttonbt5=(Button)findViewById(R.id.exit);View.OnClickListeneronclicklistener=newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){switch(v.getId()){caseR.id.play:
op=1;break;caseR.id.pause:op=2;break;caseR.id.replay:
op=3;
break;caseR.id.stopservice:op=0;break;caseR.id.exit:op=-1;
break;
}//后面繼續(xù)假設(shè)參數(shù)值:1--播放2--暫停3--重播0--結(jié)束(服務(wù))-1--退出(結(jié)束服務(wù)和Activity)MainActivity主要代碼
finalIntentintent=newIntent(MainActivity.this,MusicService.class);Bundlebundle=newBundle();if(op!=-1){
bundle.putInt("op",op);intent.putExtras(bundle);
startService(intent);
}else{
//此處添加一個(gè)AlertDialog(見后頁)}}//endonClick};//listenerbt1.setOnClickListener(onclicklistener);bt2.setOnClickListener(onclicklistener);bt3.setOnClickListener(onclicklistener);bt4.setO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:健康老齡化背景下社區(qū)老年運(yùn)動(dòng)健康促進(jìn)典型案例與創(chuàng)新模式研究
- 2025版大型商業(yè)綜合體水電安裝工程分包合同范本2篇
- 二零二五年度生物醫(yī)藥創(chuàng)新平臺(tái)建設(shè)合同:地方政府與生物醫(yī)藥企業(yè)的合作3篇
- 2025版學(xué)校食堂承包合同包含食品安全培訓(xùn)與監(jiān)督3篇
- 2025版微信公眾號(hào)與電商平臺(tái)跨界合作服務(wù)合同3篇
- 二零二五版綠化苗木培育與種植服務(wù)合同3篇
- 二零二五年度城市基礎(chǔ)設(shè)施大數(shù)據(jù)信息服務(wù)與維護(hù)合同4篇
- 二零二五年度便利店便利店加盟店員勞動(dòng)合同3篇
- 2025年二手車買賣廣告宣傳合作協(xié)議4篇
- 二零二五年度便利店品牌授權(quán)及區(qū)域保護(hù)合同3篇
- 銷售與銷售目標(biāo)管理制度
- 人教版(2025新版)七年級(jí)下冊(cè)英語:寒假課內(nèi)預(yù)習(xí)重點(diǎn)知識(shí)默寫練習(xí)
- 2024年食品行業(yè)員工勞動(dòng)合同標(biāo)準(zhǔn)文本
- 全屋整裝售后保修合同模板
- 高中生物學(xué)科學(xué)推理能力測試
- GB/T 44423-2024近紅外腦功能康復(fù)評(píng)估設(shè)備通用要求
- 2024-2030年中國減肥行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資研究報(bào)告
- 運(yùn)動(dòng)技能學(xué)習(xí)
- 棋牌室禁止賭博警示語
- 2022-2023學(xué)年四川省南充市九年級(jí)(上)期末數(shù)學(xué)試卷
- 公轉(zhuǎn)私人轉(zhuǎn)賬協(xié)議
評(píng)論
0/150
提交評(píng)論