Monodroid собирает объекты в пакеты

Поэтому я изо всех сил пытался поместить некоторые значения в пакет в моем переопределенном OnSaveInstanceState. Мне нужно сохранить некоторые объекты класса при перезапуске активности, то есть они должны быть разделены, что кажется невозможным для Monodroid?

Источник: http://docs.xamarin.com/android/about/limitations.

Что я могу сделать, чтобы сохранить эти объекты класса в пакете без разделения? Я загружаю данные с сервера и не хочу делать это снова, например, при ротации пользователей, которая еще раз вызывает метод OnCreate. Поэтому было бы неплохо сохранить их, что снижает нагрузку на сервер при случайных ротациях и тому подобном.


person Lucas Arrefelt    schedule 20.03.2012    source источник


Ответы (2)


Первоначально принятый ответ на этот вопрос, хотя и был верным в то время, когда на него был дан ответ, уже не актуален.

Первоначально я реализовал приведенное выше предложение, а затем позже в ходе поиска нашел это:

http://dan.clarke.name/2012/09/implementing-iparcelable-in-mono-for-android/

Эта функция теперь поддерживается, и приведенная выше ссылка является отличным ресурсом о том, как ее реализовать.

person DavidR    schedule 23.05.2013
comment
Похоже, наконец-то появилась поддержка Parcelable в Monodroid, теперь это правильный ответ. - person Lucas Arrefelt; 11.07.2013

Невозможно реализовать интерфейс IParcelable в Mono для Android. Взято из документов:

В настоящее время интерфейс IParcelable не может быть реализован, так как интерфейс android.os.Parcelable требует:

  • Классы, реализующие интерфейс Parcelable, также должны иметь статическое поле CREATOR, которое представляет собой объект, реализующий интерфейс
    Parcelable.Creator.

Поскольку mandroid.exe в настоящее время не может генерировать поля, этот интерфейс не может быть реализован. Поддержка будет добавлена ​​в будущем выпуске.

Другой подход, который вы можете использовать, — просто сохранить объект вне действия, например, в классе, который является подклассом Application. Вы можете хранить данные в своем классе приложения, используя либо статические свойства, либо вы можете получить доступ к свойствам/методам экземпляра с помощью файла Application из вашей активности. Более подробную информацию об использовании приложения можно найти в этом вопросе.

person Greg Shackles    schedule 20.03.2012
comment
Я закончил тем, что использовал статические переменные для этого случая, спасибо за разъяснение - person Lucas Arrefelt; 22.03.2012
comment
Документы были обновлены, и предположительно теперь есть поддержка для этого (это ограничение относится к предыдущим версиям до выпуска 4.1. В выпуске 4.1 вы можете использовать атрибуты ExportAttribute и ExportField для создания методов и полей Java, которые могут быть названы явно.). Сейчас попробую и отпишусь о положительных результатах. - person samis; 04.01.2013
comment
Официальный пример Xamarin: github.com/xamarin/monodroid- образцы/блоб/мастер/ - person samis; 04.01.2013