2014-12-11 2 views
0

Мне не нравится intent способ передачи данных между действиями. Это приводит к более дублированному коду. Пассирование данных из активности A-> B и из B-> C, а в некоторых случаях C-> D делает код более подверженным ошибкам. Я хочу передать как примитивный, так и не примитивный тип данных. Как достичь тех, кто не ставит под угрозу качество кода?Как эффективно передавать данные между действиями?

ответ

0

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

Ref: http://developer.android.com/guide/faq/framework.html#3

+1

Просто прочитайте это, прежде чем оседать на одноэлементном объекте приложения. Это может сработать для вас, но просто знайте о возможных проблемах. http://www.developerphil.com/dont-store-data-in-the-application-object/ – nPn

0

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

Другие варианты хранения данных в классе Application, но это должна быть только кешированная копия того, что вы храните в общих предпочтениях, так как объект приложения может быть убит в какой-то момент.

То, что я делаю, имеет единственный объект - экземпляр singleton класса PersistData, который обрабатывает сохранение и загрузку (и кэширование в классе Application).

Я использую Кинжал для инъекции этого объекта, когда-либо мне нужно сохранить/прочитать данные.

Вот ссылка на другой ответ, который я сделал на соответствующий вопрос, который делает лучшую работу объяснить, что я предлагаю (жаль, что я тратил время на поиск этого)

best practice to share global variables between activities

В конец вам просто два вызова, чтобы сделать:

в своей деятельности, которая имеет данные, которые вы хотите отправить, у вас есть что-то вроде

persistData.saveUserId(userId); 

В своей деятельности вы хотите получить данные у вас есть что-то вроде этого:

String userId = persistData.readUserId(); 
+0

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

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