Как передать удаленный интерфейс (aidl) через деятельность? - PullRequest
0 голосов
/ 13 мая 2010

Я занимаюсь разработкой приложения с использованием сервисов и удаленного интерфейса.

У меня есть вопрос о передаче ссылки на мой удаленный интерфейс во время действий.

В своем первом действии я связываю свой сервис со своим действием, чтобы получить ссылку на мой интерфейс, которым я пользуюсь

private ServiceConnection mConnection = new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName arg0, IBinder service) {
            x = X.Stub.asInterface(service);

        }

        @Override
        public void onServiceDisconnected(ComponentName arg0) {
            // TODO Auto-generated method stub

        }

    };

x - ссылка на мой интерфейс. Теперь я хотел бы получить доступ к этому интерфейсу из другого действия, я вижу два способа сделать это, но я не знаю, какой из них является «правильным» способом:

  • передавая х с моим намерением, когда я вызываю новую активность
  • повторить this.bindService(new Intent(y.this,z.class), mConnection, Context.BIND_AUTO_CREATE); в onCreate () моей новой активности

Что бы вы посоветовали мне сделать?

1 Ответ

1 голос
/ 13 мая 2010

Я разрабатываю приложение, используя услуги и удаленный интерфейс.

Вы уверены, что это необходимо? Если действия и служба находятся в одном приложении, не используйте AIDL для доступа к ним, так как это увеличивает издержки без какой-либо ценности. Вместо этого используйте шаблон локальной привязки, даже если вы также поддерживаете AIDL для подключения сторонних приложений.

передавая х с моим намерением, когда я звоню Новая активность

Я сомневаюсь, что это возможно или безопасно.

повторить this.bindService (новый Намерение (y.this, z.class), mConnection, Context.BIND_AUTO_CREATE); в onCreate () моей новой деятельности

Я подозреваю, что это ваш единственный вариант. Для локального сервиса такие операции связывания довольно недороги. Вот почему я рекомендую вам использовать шаблон локальной привязки для служб в вашем приложении, а не AIDL.

...