Ответ 1
Вот поток
Создайте свое намерение вызвать услугу. Вы можете startService()
или BindService()
с помощью BIND_AUTO_CREATE
Как только услуга будет связана, она создаст туннель, чтобы поговорить с ним о клиентах, который является IBinder
Интерфейс. Это используется вашей реализацией интерфейса AIDL и возвращает IBinder
в
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
для вызова и возврата любой службы из этого