Вызов методов в Binder

#android

#Android

Вопрос:

Я пытаюсь предоставить методы, используя мой подкласс Binder. Я собираюсь заставить свой сервис вернуть этот Binder и т.д. И т.п…

Мой вопрос: могу ли я определить методы вызова моей реализации Binder в других моих классах. В качестве примера я использую XMPP для подключения, входа в систему и отправки сообщений чата. Если я определю эти методы в другом классе (что имеет смысл с точки зрения модульности), могу ли я просто предоставить их через мой Binder?

Кроме того, я понимаю, что вам больше не нужно использовать AIDL для IPC (http://developer.android.com/guide/topics/fundamentals/bound-services.html#Messenger ), но вместо этого вы можете использовать мессенджеры. Мне немного неясно, как activity (или другой компонент приложения) будет привязываться, а затем вызывать определенный метод, предоставляемый моим Binder.

Любые примеры или просто разъяснение мне были бы весьма признательны.

Спасибо.

Ответ №1:

Мой вопрос: могу ли я определить методы вызова моей реализации Binder в других моих классах.

Вообще говоря, конечно, почему бы и нет?

Если я определю эти методы в другом классе (что имеет смысл с точки зрения модульности), могу ли я просто предоставить их через мой Binder?

В принципе, да, но это, вероятно, будет немного зависеть от того, что такое «эти методы» на самом деле.

Кроме того, я понимаю, что вам больше не нужно использовать AIDL для IPC (http://developer.android.com/guide/topics/fundamentals/bound-services.html#Messenger ), но вместо этого вы можете использовать мессенджеры.

Существует несколько способов выполнить IPC в Android с помощью сервисов. AIDL является одним из них. Добавление Messenger в Intent дополнение — это другое. Они не противоречат друг другу, и есть и другие варианты.

Мне немного неясно, как activity (или другой компонент приложения) будет привязываться, а затем вызывать определенный метод, предоставляемый моим Binder.

Они вызывают bindService() с помощью ServiceConnection , затем используют Binder поставляемый через ServiceConnection метод onServiceConnected() .

Комментарии:

1. Сам Марк Мерфи, вау! Весь день читал о сервисах в трех ваших книгах. Имеет ли смысл, с точки зрения дизайна, иметь отдельный класс messenger для отправки сообщений в мою службу? А затем просто вызывающие методы сообщений класса messenger из моей активности?

2. @LuxuryMode: «Сам Марк Мерфи, вау!» Марк Мерфи? Где?? О, подожди, ты имеешь в виду меня. 🙂 Что касается вашего обсуждения «отдельного класса messenger», боюсь, я не совсем понимаю, что вы имеете в виду.