Этого ответа относится только к ситуации, когда объекты, подлежащие передаче, имеют вложенную структуру классов. С вложенной структурой класса создание Parcelable или Serializeable немного утомительно. И процесс сериализации объекта - not efficient on Android.Рассмотрим пример ниже,
class Myclass {
int a;
class SubClass {
int b;
}
}
С Google, GSON library, вы можете непосредственно разобрать объект в отформатированную строку JSON и преобразовать его обратно в формат объекта после использования. Например,
MyClass src = new MyClass();
Gson gS = new Gson();
String target = gS.toJson(src); // Converts the object to a JSON String
Теперь вы можете передать эту Строку через действия как StringExtra с намерением активности.
Intent i = new Intent(FromActivity.this, ToActivity.class);
i.putExtra("MyObjectAsString", target);
Затем в принимающей операции создайте исходный объект из строкового представления.
String target = getIntent().getStringExtra("MyObjectAsString");
MyClass src = gS.fromJson(target, MyClass.class); // Converts the JSON String to an Object
Он сохраняет исходные классы в чистоте и многоразовом. Прежде всего, если эти объекты класса создаются из Интернета как объекты JSON, то это решение очень эффективно и экономит время.
UPDATE
Хотя выше объяснил метод работает для большинства ситуаций, по понятным причинам производительности не полагаться на комплектной-EXTRA системы Android, чтобы передавать объекты вокруг. Есть ряд решений, которые делают этот процесс гибким и эффективным, вот несколько. У каждого есть свои плюсы и минусы.
- Eventbus
- Otto
Я решил эту проблему много лет назад, но я думал, что ваш ответ стоит принять. – mtmurdock
Можете ли вы рассказать мне, как вы реализовали методы Parcelable? currentListing должен иметь тип Parcelable right? – Namratha
Да, вам нужно будет реализовать интерфейс Parcelable и обеспечить реализацию. Таким образом, у него в основном есть методы для создания фактического объекта из посылки и записи данных на посылку. – anargund