本帖最后由 cxb746 于 2011-01-07 02:15:01 编辑

解决方案 »

  1.   

      
    /*Activity与服务进行通信,开发人员通常把通信方法定义在接口里,然后让Ibinder对象实现该接口,而Activity通过该接口引用服务onBind()方法返回的Ibinder对象,然后调用Ibinder对象里自定义的通信方法。例子如下:本例是一个本地服务,即服务与Activity在同一个应用内部。
    接口:*/
    public interface ICountService {
    public int getCount();
    }
    服务类:
    public class CountService extends Service {
    private boolean quit;
    private int count;
    private ServiceBinder serviceBinder = new ServiceBinder();public class ServiceBinder extends Binder implements ICountService {
    @Override
    public int getCount() {
    return count;
    }
    }
    @Override
    public IBinder onBind(Intent intent) {
    return serviceBinder;
    }
    @Override
    public void onCreate() {
    super.onCreate();
    new Thread(new Runnable() {
    @Override
    public void run() {
    while (!quit) {
        try {
    Thread.sleep(1000);
        } catch (InterruptedException e) {}
        count++;
    }
    }
    }).start();
    }@Override
    public void onDestroy() {
    super.onDestroy();
    this.quit = true;
    }
    }
    //客户端Activity:
    public class ClientActivity extends Activity {
    private ICountService countService; @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    this.bindService(new Intent(this, CountService.class), this.serviceConnection, BIND_AUTO_CREATE);
    } @Override
    protected void onDestroy() {
    super.onDestroy();
    this.unbindService(serviceConnection);
    }

    private ServiceConnection serviceConnection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
    countService = (ICountService) service;//对于本地服务,获取的实例和服务onBind()返回的实例是同一个
    int i = countService.getCount();
    Log.v("CountService", "Count is " + i);
    }
    @Override
    public void onServiceDisconnected(ComponentName name) {
    countService = null;
    }
    };
    }
      

  2.   

    通过activity绑定一个服务,在这个服务中实例化mIBinder这个个接口,如:
    private IMyService.Stub myService = new IMyService.Stub() {

    public Location getMyLocation(boolean locateType, int provider) throws RemoteException {
    return getLocation(locateType, provider);
    }
    };


    @Override
    public IBinder onBind(Intent intent) {
    return myService;
    }
    然后在activity中通过myService 对象就可以调用接口中的方法喽 
    不太明白的话  看看这个吧  :http://blog.sina.com.cn/s/blog_643e83860100p07k.html