Служебный вызов назад к активности в android

У меня работает фоновый сервис и клиент, который взаимодействует с сервисом.

Когда клиент запрашивает какую-либо операцию, служба выполняет ее, и она должна отправить результат обратно на активность (клиент).

Я знаю, как вызывать методы обслуживания в действии и использовать обратные вызовы, которые мы можем достичь, что я хочу делать. Но я не могу понять механизм обратного вызова и пример кода, представленный в демонстрационных версиях Api (remoteservice).

Может ли кто-нибудь объяснить, как работает этот обратный вызов службы? или что-либо, что можно достичь с использованием более простого механизма.

Ответы

Ответ 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 для вызова и возврата любой службы из этого