2016-12-20 3 views
0

В проекте Android уже используется Serializable для передачи информации между внутренними модулями.Отправка Parcelable объектов как Serializable

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

Мне нужно передать один из этих «внешних» объектов другому модулю, это не является Serializable, поэтому я не могу его нормально отправлять. Передо мной программист превратил все несериализуемые объекты в статические переменные в классе Wrapper, я не уверен, что это хорошая идея, хотя модули должны оставаться активными все время.

Это Сериализуемый класс-оболочка:

private static Road road; 
private NavigationStep firstNavigationStep; 

/** 
* To send the route information to the App. Here is everything the app needs to display the 
* data to the user. 
* @param road the route the user is to follow 
* @param firstNavigationStep the users location and the current Step. 
*/ 
public CurrentRoad(Road road, NavigationStep firstNavigationStep){ 
    this.firstNavigationStep = firstNavigationStep; 
    this.road  = road; 
} 

Дать Дорогу, как преходящий заставляет меня терять данные, написав целый класс обертку для дороги было бы слишком много работы (это необходимо для создания наложений, так много геометрии внутри и из внешней библиотеки, поэтому я могу что-то забыть). Изменение всего проекта на Parcelable также нереально.

Есть ли решение? Лучше всего просто сохранить то, что мне нужно, как статическое?

ответ

0

Попробуйте использовать EventBus. Отправить липкое событие, содержащее ссылку на объект. Он будет доставлен каждому подписанному объекту до тех пор, пока вы явно не отмените это событие.

+0

Существует уже служба сообщений, описанная в нашей архитектуре, она использует Serializable. Это MessageManger, написанная кем-то еще в проекте. Я немного новичок в команде, и проект охватывает более чем одну компанию, поэтому добавление внешней библиотеки не так просто – Raeglan

0

Возможно, вы можете использовать мероприятие (http://greenrobot.org/eventbus/), чтобы передать объект туда, где он вам нужен.

+0

Уже существует служба сообщений, описанная в нашей архитектуре, она использует Serializable. Это MessageManger, написанная кем-то еще в проекте. Я новичок в команде, и проект охватывает более чем одну компанию, поэтому добавление внешней библиотеки не так просто – Raeglan

+0

Хорошо, я не уверен, что понимаю нюансы вашего вопроса, но, возможно, вы можете попытаться их сохранить в одном экземпляре в вашем (возможно расширенном) классе приложения. Предполагая, что у вас всегда есть доступ к контексту приложения, который позволит вам хранить то, что должно проживать до тех пор, пока ваше приложение. Затем, возможно, намерение или какой-либо другой сигнал, чтобы вызвать, что значение этого класса singelton должно быть прочитано на принимающей стороне. – Julius

Смежные вопросы