正如前面提到的这里和所有开发人员所做的那样,Activity有几种与Service通信的方法。最流行的方法是使用意图数据和绑定。仅仅通过调用服务的方法就可以与服务进行通信吗?如果可能,可以使用吗?
发布于 2013-09-05 13:37:44
是的,您只需从绑定器返回服务实例即可。看看在这篇文章,看看如何做到这一点。
从上面链接的文章中提取(查找行:int num = mService.getRandomNumber();)。
LocalService.java
public class LocalService extends Service {
private final IBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder {
LocalService getService() {
return LocalService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
public int getRandomNumber() {
return 5;
}
}BindingActivity.java
public class BindingActivity extends Activity {
LocalService mService;
boolean mBound = false;
@Override
protected void onStart() {
super.onStart();
// Bind to LocalService
Intent intent = new Intent(this, LocalService.class);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
// We've bound to LocalService, cast the IBinder and get LocalService instance
LocalBinder binder = (LocalBinder) service;
mService = binder.getService();
mBound = true;
// Call the method from service
int num = mService.getRandomNumber();
}
};
}https://stackoverflow.com/questions/18637724
复制相似问题