Android,与后台服务通信

Android,与后台服务通信,android,performance,android-intent,android-fragments,android-activity,Android,Performance,Android Intent,Android Fragments,Android Activity,我有在设备启动时启动的后台服务。我想在我的活动中从该服务获取一些数据 我只在活动开始时才需要数据。因此,基本要求是,当我的活动启动时,它与后台服务建立连接并从该服务获取数据,当活动停止时,然后断开与该服务的连接。您需要使用bindService()与正在运行的服务绑定并与之通信 参考: 例如(来自Android文档) 为您服务 public class LocalService extends Service { // Binder given to clients privat

我有在设备启动时启动的后台服务。我想在我的活动中从该服务获取一些数据


我只在活动开始时才需要数据。因此,基本要求是,当我的活动启动时,它与后台服务建立连接并从该服务获取数据,当活动停止时,然后断开与该服务的连接。

您需要使用bindService()与正在运行的服务绑定并与之通信

参考:

例如(来自Android文档)

为您服务

 public class LocalService extends Service {
    // Binder given to clients
   private final IBinder mBinder = new LocalBinder();
   // Random number generator
   private final Random mGenerator = new Random();

/**
 * Class used for the client Binder.  Because we know this service always
 * runs in the same process as its clients, we don't need to deal with IPC.
 */
public class LocalBinder extends Binder {
    LocalService getService() {
        // Return this instance of LocalService so clients can call public methods
        return LocalService.this;
    }
}

@Override
public IBinder onBind(Intent intent) {
    return mBinder;
}

/** method for clients */
public int getRandomNumber() {
  return mGenerator.nextInt(100);
  }
}
基本上,您应该在活动
onStart()
中使用
bindService()
,在
onStop()中使用
unbindService()

 public class LocalService extends Service {
    // Binder given to clients
   private final IBinder mBinder = new LocalBinder();
   // Random number generator
   private final Random mGenerator = new Random();

/**
 * Class used for the client Binder.  Because we know this service always
 * runs in the same process as its clients, we don't need to deal with IPC.
 */
public class LocalBinder extends Binder {
    LocalService getService() {
        // Return this instance of LocalService so clients can call public methods
        return LocalService.this;
    }
}

@Override
public IBinder onBind(Intent intent) {
    return mBinder;
}

/** method for clients */
public int getRandomNumber() {
  return mGenerator.nextInt(100);
  }
}