Я немного новичок в Android. Что мне нужно сделать, это отправлять данные туда и обратно между деятельностью и службой локально. Отправленная информация является конфиденциальной и не должна быть доступна другим приложениям. Это исключает использование широковещания и функции onBind (), если я правильно понимаю?
Таким образом, активность должна отправлять в службу некоторые строковые параметры. Кроме того, ему нужно как-то сообщить службе, какое действие оно запустило, чтобы служба могла ответить на правильный класс, так как многие другие действия будут использовать эту службу. После того, как служба извлекла информацию через запрос http, предполагается, что эти данные (просто длинная строка, которая будет позже проанализирована) отправляются обратно в активность, которая ее начала. Как мне это сделать? Использование статических переменных / функций не является опцией, так как снова многие активные будут использовать эту услугу. Конечно, можно было бы использовать статический массив для хранения классов, но это только кажется уродливым ... Можно только отправлять простые переменные (не объекты) через намерение? Должен быть лучший способ сделать это. Я занимался серфингом в Интернете в течение нескольких часов. Любая помощь будет принята с благодарностью.
EDIT
Пример, найденный на Android Developers [http://developer.android.com/reference/android/app/Service.html#stopSelf(int)], помог мне реализовать локальное связующее.
Для тех из вас, кто интересуется здесь, есть еще немного информации о моей реализации.
- Как только вызывается функция onServiceConnected, вызывается функция в службе, чтобы установить, с какой деятельностью она связана. После этого и сервис, и деятельность могут взаимодействовать друг с другом взад и вперед.
- Убедитесь, что у потока в классе обслуживания есть обработчик. Это позволяет потоку отправлять сообщение своему обработчику, как только он завершил свою задачу. Затем обработчик отправляет результат из службы обратно в связанную деятельность. Выполнение этого через обработчик гарантирует, что приложение вернется в основной поток, когда это будет сделано.