В вашем случае (извлечение информации из памяти), определенно избегайте использования одноэлементного класса, потому что он, скорее всего, будет привязан к вашему контексту Activity.
Ваш класс будет иметь статическую ссылку на класс, поэтому
- он будет храниться в памяти, когда он не нужен.
- singleton может быть восстановлен или может использовать устаревший экземпляр с новыми инструкциями действий. Вы потеряете контроль над текущими переменными.
- Различные экземпляры одного и того же класса активности могут конфликтовать с этим классом.
Примеры одного и того же класса деятельности нескольких экземпляров:
- Изменить ориентацию устройства.
- Запуск приложения из браузера, Google Play, файла браузера.
Кроме того, в какой-то момент, когда вы добавите функциональность на основе отзывов пользователей, ваше приложение будет расти, вы, вероятно, захотите реорганизовать свой класс, разбить его на подклассы, поместить некоторые из его методов в отдельные потоки. Это больше не будет легко сделать.
Может показаться забавным, когда приложение маленькое и непроверенное, но позже, особенно в Android, вы столкнетесь с непредсказуемым и трудно выявляемым ошибками.
Из-за особого способа Android воссоздать класс активности через onCreate, onResume и т. Д. Вы столкнетесь с кошмаром, когда приложение начнет жить своей собственной жизнью.
Вы больше не сможете полагаться на предположение о том, что текущий экземпляр Singleton действительно принадлежит вашей текущей деятельности.
Вы можете переключаться между ориентациями или запускать свое приложение из разных точек входа (панель запуска, последние приложения, Google Play), и оно может повторно использовать переменные, фактически подготовленные для другого экземпляра действия.
Если вам нужен только один экземпляр класса, просто создайте один экземпляр класса в методе onCreate - и это сделает приложение намного более управляемым.