Передающие данные нетипа примитива между операциями в андроиде

Разница между двумя случаями заключается в том, что в случае 1 базовый метод DoIt не становится переопределенным, просто скрытым. Это означает, что в зависимости от типа переменной зависит, какой метод будет вызван. Например:

BaseClass instance1 = new SubClass();
instance1.DoIt(); // Calls base class DoIt method

SubClass instance2 = new SubClass();
instance2.DoIt(); // Calls sub class DoIt method

Это может быть действительно запутанным и приводит к не ожидаемому поведению, и его следует избегать, если это возможно. Таким образом, предпочтительным способом будет случай 2.

23
задан aspartame 17 September 2009 в 23:33
поделиться

2 ответа

У вас есть несколько вариантов:

  1. Вы можете заключить более сложную структуру в класс, реализующий интерфейс Parcelable , который может быть сохранен в дополнительном
  2. . Вы можете заключить более сложную структура в классе, который реализует интерфейс Serializable , который может храниться в дополнительном
  3. . Вы используете статические элементы данных для передачи информации, поскольку все они находятся в одном процессе
  4. Вы используете внешние хранилище (файл, база данных, SharedPreferences )
  5. Как заметил человек, который только что разместил сообщение, используйте общий компонент, например пользовательское приложение или локальную службу

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

57
ответ дан 29 November 2019 в 01:14
поделиться

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

Я также слышал об использовании Google Protocol Buffer для достижения более производительного решения

2
ответ дан j pimmel 29 November 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: