Java乔晓松-android的四大组件之一Service(服务的绑定) (一)

2014-11-24 10:24:20 · 作者: · 浏览: 0

android的四大组件之一Service(服务的绑定)

\

怎么绑定服务,又怎么解除服务,代码如下:

MainActivity.java源码


package com.example.lesson14_binder; 
 
import android.app.Activity; 
import android.content.ComponentName; 
import android.content.Context; 
import android.content.Intent; 
import android.content.ServiceConnection; 
import android.os.Bundle; 
import android.os.IBinder; 
import android.view.View; 
 
/** 
 * 2013-6-18 下午2:22:00 
 *  
 * @author 乔晓松 
 */ 
public class MainActivity extends Activity { 
 
    public MyService myService; 
    // 内部类获取连接对象 
    public ServiceConnection conn = new ServiceConnection() { 
 
        // 连接失败后调用的方法 
        @Override 
        public void onServiceDisconnected(ComponentName name) { 
            myService = null; 
            System.out.println("-----service Faild"); 
        } 
 
        // 连接成功后调用的方法 
        @Override 
        public void onServiceConnected(ComponentName name, IBinder service) { 
            myService = ((MyService.MyBinder) service).getService(); 
            System.out.println("-----service connection"); 
        } 
    }; 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
    } 
 
    // 绑定服务 
    public void bindService(View v) { 
 
        Intent serviceIntent = new Intent(this, MyService.class); 
        this.bindService(serviceIntent, conn, Context.BIND_AUTO_CREATE); 
 
        System.out.println("---------bindService"); 
    } 
 
    // 解除绑定 
    public void unBindService(View v) { 
        this.unbindService(conn); 
        System.out.println("---------unBindService"); 
    } 
 
} 

package com.example.lesson14_binder;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;

/**
 * 2013-6-18 下午2:22:00
 *
 * @author 乔晓松
 */
public class MainActivity extends Activity {

 public MyService myService;
 // 内部类获取连接对象
 public ServiceConnection conn = new ServiceConnection() {

  // 连接失败后调用的方法
  @Override
  public void onServiceDisconnected(ComponentName name) {
   myService = null;
   System.out.println("-----service Faild");
  }

  // 连接成功后调用的方法
  @Override
  public void onServiceConnected(ComponentName name, IBinder service) {
   myService = ((MyService.MyBinder) service).getService();
   System.out.println("-----service connection");
  }
 };

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

 // 绑定服务
 public void bindService(View v) {

  Intent serviceIntent = new Intent(this, MyService.class);
  this.bindService(serviceIntent, conn, Context.BIND_AUTO_CREATE);

  System.out.println("---------bindService");
 }

 // 解除绑定
 public void unBindService(View v) {
  this.unbindService(conn);
  System.out.println("---------unBindService");
 }

}

MyService.java源码:

  package com.example.lesson14_binder; 
 
import android.app.Service; 
import android.content.Intent; 
import android.os.Binder; 
import android.os.IBinder; 
 
/** 
 * 2013-6-18 下午2:16:37 
 *  
 * @author 乔晓松 
 */ 
public class MyService extends Service { 
 
    public MyBinder myBinder = new MyBinder(); 
 
    // 绑定的时候执行 
    @Override 
    pu