Android Service控件用法實(shí)例分析
本文實(shí)例講述了Android Service控件用法。分享給大家供大家參考,具體如下:
1、Service是一個(gè)應(yīng)用程序的組件
2、Service沒有圖形化界面
3、用來(lái)處理耗時(shí)比較長(zhǎng)的功能(下載、播放MP3)
4、更新ContentProvider、Intent以及系統(tǒng)的啟動(dòng)
Servcie不是一個(gè)單獨(dú)的進(jìn)程,不是一個(gè)線程
定義一個(gè)Service比較簡(jiǎn)單,只要繼承Service類,實(shí)現(xiàn)其生命周期的方法即可。一個(gè)定義好的Service必須在AndroidManifest.xml文件中通過(guò)<service>聲明才能使用
<service android:name="MyService"> <intent-filter> <action android:name="hb.com.MYSERVICE"/> </intent-filter> </service>
備注:MyService一定要是繼承了Service類的,并且名稱和類名是一致的
action的名稱是自定義的,只要在bindService或者操作Intent的時(shí)候就能夠被捕獲
public class MyService extends Service { public class MyBinder extends Binder{ public MyService getMyService(){ return MyService.this; } } public void test(){ System.out.println("test"); } @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub System.out.println("onBind"); return new MyBinder(); } @Override public void onCreate() { // TODO Auto-generated method stub System.out.println("onCreate"); super.onCreate(); } @Override public boolean onUnbind(Intent intent) { System.out.println("I am unbind"); return super.onUnbind(intent); } }
public class MainActivity extends Activity { private static final String MYSERVICE = "hb.com.MYSERVICE"; private boolean flag = false; //bindService()方法需要ServiceConnection接口作為參數(shù),所以定義了這個(gè)變量,目的是為了實(shí)現(xiàn)里面的兩個(gè)方法 ServiceConnection conn = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { System.out.println("onServiceDisconnected"); } @Override public void onServiceConnected(ComponentName name, IBinder service) { System.out.println("onServiceConnected"); MyBinder myBinder = (MyBinder)service; MyService myService = myBinder.getMyService(); myService.test(); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.start).setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction(MYSERVICE); //先調(diào)用MyService的onCreate()方法,然后調(diào)用onBind()方法,最后調(diào)用onServiceConnected()方法 //因此IBinder返回的值就是通過(guò)onBind()方法返回的對(duì)象,定義getMyService()方法是為了得到MyService對(duì)象,用戶在這個(gè)類中添加自己需要的一些方法,這樣可以做一些邏輯處理 bindService(intent, conn, Service.BIND_AUTO_CREATE); flag = true; } }); findViewById(R.id.stop).setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { if(flag){ //取消綁定事件,會(huì)調(diào)用MyService的onUnbind()方法,但是不會(huì)調(diào)用onServiceDisconnected()這個(gè)方法,原因不明 unbindService(conn); flag = false; } } }); } }
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android文件操作技巧匯總》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- 淺談Service Manager成為Android進(jìn)程間通信(IPC)機(jī)制Binder守護(hù)進(jìn)程之路
- Android基于Service的音樂播放器
- Android實(shí)現(xiàn)開機(jī)自動(dòng)啟動(dòng)Service或app的方法
- Android使用Messenger實(shí)現(xiàn)service與activity交互
- 深入剖析Android系統(tǒng)中Service和IntentService的區(qū)別
- 詳解Android中Service服務(wù)的基礎(chǔ)知識(shí)及編寫方法
- Android實(shí)現(xiàn)Activity、Service與Broadcaster三大組件之間互相調(diào)用的方法詳解
- Android Service中方法使用詳細(xì)介紹
相關(guān)文章
Android學(xué)習(xí)筆記45之gson解析json
JSON即JavaScript Object Natation,是一種輕量級(jí)的數(shù)據(jù)交換格式,采用完全獨(dú)立于語(yǔ)言的文本格式,為Web開發(fā)提供了一種理想的數(shù)據(jù)交換格式。通過(guò)本篇文章給大家介紹Android學(xué)習(xí)筆記45之gson解析json的相關(guān)內(nèi)容,對(duì)android gson解析json相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-12-12Android實(shí)現(xiàn) EditText輸入手機(jī)號(hào)空格功能
這篇文章主要介紹了Android實(shí)現(xiàn) EditText輸入手機(jī)號(hào)空格功能,實(shí)現(xiàn)思路是要重寫TextWatcher,每次EditText內(nèi)容變化,都判斷內(nèi)容是否符合要求,具體實(shí)例代碼大家參考下本文2018-02-02Android實(shí)現(xiàn)歡迎界面停留3秒效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)歡迎界面停留3秒效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02Android Easeui 3.0 即時(shí)通訊的問(wèn)題匯總
這篇文章主要介紹了Android Easeui 3.0 即時(shí)通訊的問(wèn)題匯總的相關(guān)資料,需要的朋友可以參考下2016-09-09Android 實(shí)例開發(fā)一個(gè)學(xué)生管理系統(tǒng)流程詳解
讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)學(xué)生管理系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11android實(shí)現(xiàn)自動(dòng)發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)自動(dòng)發(fā)送郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07