Как вернуть объект из IntentService? - PullRequest
1 голос
/ 24 августа 2011

My Activity запускает IntentService, который затем вызывает удаленный API. Затем мне нужно передать полученные данные обратно в Activity (через BroadcastReceiver). В большей части остальной части приложения эти данные инкапсулированы в единый класс с примитивными переменными-членами, содержащими данные. Но так как результаты передаются через Intent, я ограничен в своих возможностях, так как не могу передать стандартный Java-объект через границу. Я ищу аккуратный и опрятный способ передачи таких объектов через Intent, не требуя написания большого количества повторяющегося кода.

Опции:

  1. Реализация Parcelable в моем классе. Утомительно внедрять / поддерживать
  2. Передайте каждую переменную-член индивидуально и восстановите объект на другой стороне. Утомительно внедрять / поддерживать
  3. Используйте AIDL для указания договора. Никогда раньше этого не делал, не уверен, насколько это уместно.
  4. Сериализует объект и передает строку в Activity. Есть ли ограничение длины строки для прохождения через намерение? Я понимаю, что могут быть проблемы с производительностью.

Какой подход я должен использовать и почему?

1 Ответ

2 голосов
/ 24 августа 2011

Этот удаленный API сериализует данные каким-либо образом (JSON или XML)? Разве вы не можете задержать десериализацию, пока она не достигнет Деятельности?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...