Android Service控件用法實例分析
本文實例講述了Android Service控件用法。分享給大家供大家參考,具體如下:
1、Service是一個應(yīng)用程序的組件
2、Service沒有圖形化界面
3、用來處理耗時比較長的功能(下載、播放MP3)
4、更新ContentProvider、Intent以及系統(tǒng)的啟動
Servcie不是一個單獨的進(jìn)程,不是一個線程
定義一個Service比較簡單,只要繼承Service類,實現(xiàn)其生命周期的方法即可。一個定義好的Service必須在AndroidManifest.xml文件中通過<service>聲明才能使用
<service android:name="MyService">
<intent-filter>
<action android:name="hb.com.MYSERVICE"/>
</intent-filter>
</service>
備注:MyService一定要是繼承了Service類的,并且名稱和類名是一致的
action的名稱是自定義的,只要在bindService或者操作Intent的時候就能夠被捕獲
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ù),所以定義了這個變量,目的是為了實現(xiàn)里面的兩個方法
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返回的值就是通過onBind()方法返回的對象,定義getMyService()方法是為了得到MyService對象,用戶在這個類中添加自己需要的一些方法,這樣可以做一些邏輯處理
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){
//取消綁定事件,會調(diào)用MyService的onUnbind()方法,但是不會調(diào)用onServiceDisconnected()這個方法,原因不明
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é)》
希望本文所述對大家Android程序設(shè)計有所幫助。
- 淺談Service Manager成為Android進(jìn)程間通信(IPC)機(jī)制Binder守護(hù)進(jìn)程之路
- Android基于Service的音樂播放器
- Android實現(xiàn)開機(jī)自動啟動Service或app的方法
- Android使用Messenger實現(xiàn)service與activity交互
- 深入剖析Android系統(tǒng)中Service和IntentService的區(qū)別
- 詳解Android中Service服務(wù)的基礎(chǔ)知識及編寫方法
- Android實現(xiàn)Activity、Service與Broadcaster三大組件之間互相調(diào)用的方法詳解
- Android Service中方法使用詳細(xì)介紹
相關(guān)文章
Android學(xué)習(xí)筆記45之gson解析json
JSON即JavaScript Object Natation,是一種輕量級的數(shù)據(jù)交換格式,采用完全獨立于語言的文本格式,為Web開發(fā)提供了一種理想的數(shù)據(jù)交換格式。通過本篇文章給大家介紹Android學(xué)習(xí)筆記45之gson解析json的相關(guān)內(nèi)容,對android gson解析json相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧2015-12-12
Android實現(xiàn) EditText輸入手機(jī)號空格功能
這篇文章主要介紹了Android實現(xiàn) EditText輸入手機(jī)號空格功能,實現(xiàn)思路是要重寫TextWatcher,每次EditText內(nèi)容變化,都判斷內(nèi)容是否符合要求,具體實例代碼大家參考下本文2018-02-02
Android 實例開發(fā)一個學(xué)生管理系統(tǒng)流程詳解
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實現(xiàn)一個學(xué)生管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11

