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);
}
}