Вот поток
Создайте свое намерение позвонить в службу. Вы можете либо startService()
, либо BindService()
с BIND_AUTO_CREATE
Как только услуга становится связанной, она создаст туннель для общения с клиентами, который является IBinder
Интерфейс. Это используется вашей реализацией интерфейса AIDL и возвращает IBinder
in
private final MyServiceInterface.Stub mBinder = new MyServiceInterface.Stub() {
public int getNumber() {
return new Random().nextInt(100);
}
};
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(this, "Service OnBind()", Toast.LENGTH_LONG).show();
return mBinder;
}
Как только он вернет mBinder
, ServiceConnection
, который вы создали в клиенте, будут отозваны, и вы получите интерфейс службы, используя этот
mConnection = new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
mService = MyServiceInterface.Stub.asInterface(service);
};
Теперь у вас есть mService
интерфейс для вызова и получения любой службы из этого