绑定服务
右边部分就是绑定服务的运行过程
这样绑定的目的就是服务绑定者调用服务的方法,在我的样例里就是体现为服务访问者调用服务的show()方法
来张效果图吧
分析:
1、第一步还是继承服务类
1 package fry; 2 3 import java.io.FileDescriptor; 4 5 import android.app.Service; 6 import android.content.Intent; 7 import android.os.Binder; 8 import android.os.IBinder; 9 import android.os.IInterface;10 import android.os.Parcel;11 import android.os.RemoteException;12 import android.util.Log;13 14 public class myService extends Service{15 16 /**17 * 当绑定这个服务的时候调用18 */19 @Override20 public IBinder onBind(Intent arg0) {21 Log.d("fanfan", "onBind");22 return new MyServiceBinder();23 }24 /**25 * 当解除绑定这个服务的时候调用26 */27 @Override28 public boolean onUnbind(Intent intent) {29 Log.d("fanfan", "onUnbind");30 return super.onUnbind(intent);31 }32 /**33 * 当重新绑定这个服务的时候调用34 */35 @Override36 public void onRebind(Intent intent) {37 Log.d("fanfan", "onRebind");38 super.onRebind(intent);39 }40 41 /**42 * service被创建后调用43 */44 @Override45 public void onCreate() {46 Log.d("fanfan", "onCreate");47 super.onCreate();48 }49 50 /**51 * service被start后调用52 */53 @Override54 public int onStartCommand(Intent intent, int flags, int startId) {55 Log.d("fanfan", "onStartCommand");56 return super.onStartCommand(intent, flags, startId);57 }58 59 /**60 * service被停止后调用61 */62 @Override63 public void onDestroy() {64 Log.d("fanfan", "onDestroy");65 super.onDestroy();66 }67 68 public void show(){69 Log.d("fanfan", "show");70 }71 72 /**73 * 中介74 * @author Fry75 *76 */77 public class MyServiceBinder extends Binder{78 public void show(){79 myService.this.show();80 }81 82 }83 84 85 }
2、第二步的话就是配置服务
15 6 9 10 15 18 19 23 2420 21 22 25 26 27 28 29 30 31 32
3、第三步就是绑定服务
1 package fry; 2 3 import com.example.bindservice.R; 4 5 import fry.myService.MyServiceBinder; 6 import android.app.Activity; 7 import android.content.ComponentName; 8 import android.content.Context; 9 import android.content.Intent;10 import android.content.ServiceConnection;11 import android.os.Bundle;12 import android.os.IBinder;13 import android.util.Log;14 import android.view.View;15 16 public class Activity01 extends Activity{17 private ServiceConnection conn;18 @Override19 protected void onCreate(Bundle savedInstanceState) {20 // TODO Auto-generated method stub21 super.onCreate(savedInstanceState);22 setContentView(R.layout.activity01);23 conn=new ServiceConnection(){24 /**25 * 当服务访问者与服务绑定成功后调用26 */27 @Override28 public void onServiceConnected(ComponentName arg0, IBinder service) {29 Log.d("fanfan", "onServiceConnected");30 MyServiceBinder binder=(MyServiceBinder)service;31 //实现了访问者调用服务者的方法32 binder.show();33 }34 /**35 * 当service崩溃或被系统强制杀死后调用36 */37 @Override38 public void onServiceDisconnected(ComponentName arg0) {39 Log.d("fanfan", "onServiceDisconnected");40 }41 42 };43 }44 45 public void onClick(View view){46 Intent intent=new Intent();47 intent.setClass(this, myService.class);48 switch(view.getId()){49 case R.id.btn_bind://绑定服务50 bindService(intent, conn, Context.BIND_AUTO_CREATE);51 break;52 case R.id.btn_unbind://解绑服务53 unbindService(conn);54 break;55 }56 }57 }