歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android之使用bindService啟動服務

一般情況下我們使用startService(Intent service)來啟動一個服務,但這種情況下無法得到Service對象的引用,通過bindService方法啟動服務則可以實現此功能。下面給一個小例子演示一下:

1.調用者

 

  1. package com.zhf.local;  
  2.   
  3.   
  4. import Android.app.Activity;  
  5. import android.content.ComponentName;  
  6. import android.content.Context;  
  7. import android.content.Intent;  
  8. import android.content.ServiceConnection;  
  9. import android.os.Bundle;  
  10. import android.os.IBinder;  
  11.   
  12. /** 
  13.  * 此例的目的就是拿到MyService的引用,從而可以引用其內部的方法和變量 
  14.  * @author Administrator 
  15.  * 
  16.  */  
  17. public class LocalServiceActivity extends Activity {  
  18.     /** Called when the activity is first created. */  
  19.     private MyService myService;  
  20.   
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.main);  
  25.   
  26.         Intent intent = new Intent(this, MyService.class);  
  27.         bindService(intent, connection, Context.BIND_AUTO_CREATE);  
  28.     }  
  29.   
  30.     private ServiceConnection connection = new ServiceConnection() {  
  31.   
  32.         @Override  
  33.         public void onServiceDisconnected(ComponentName name) {  
  34.             myService = null;  
  35.         }  
  36.   
  37.         @Override  
  38.         public void onServiceConnected(ComponentName name, IBinder service) {  
  39.             myService = ((MyService.MyBinder) service).getService();  
  40.             System.out.println("Service連接成功");  
  41.             //執行Service內部自己的方法   
  42.             myService.excute();  
  43.         }  
  44.     };  
  45.   
  46.     protected void onDestroy() {  
  47.         super.onDestroy();  
  48.         unbindService(connection);  
  49.     };  
  50. }  

2.服務者

 

  1. package com.zhf.local;  
  2.   
  3. import android.app.Service;  
  4. import android.content.Intent;  
  5. import android.os.Binder;  
  6. import android.os.IBinder;  
  7.   
  8. public class MyService extends Service {  
  9.     private final IBinder binder=new MyBinder();  
  10.     @Override  
  11.     public IBinder onBind(Intent intent) {  
  12.         return binder;  
  13.     }  
  14.       
  15.     public class MyBinder extends Binder{  
  16.         MyService getService(){  
  17.             return MyService.this;  
  18.         }  
  19.     }  
  20.       
  21.     public void excute(){  
  22.         System.out.println("通過Binder得到Service的引用來調用Service內部的方法");  
  23.     }  
  24.   
  25.     @Override  
  26.     public void onDestroy() {  
  27.         //當調用者退出(即使沒有調用unbindService)或者主動停止服務時會調用   
  28.         super.onDestroy();  
  29.     }  
  30.   
  31.     @Override  
  32.     public boolean onUnbind(Intent intent) {  
  33.         //當調用者退出(即使沒有調用unbindService)或者主動停止服務時會調用   
  34.         System.out.println("調用者退出了");  
  35.         return super.onUnbind(intent);  
  36.     }  
  37. }  

Copyright © Linux教程網 All Rights Reserved