Должен ли я использовать Сервис как способ доступа к сетевым данным?

Я несколько новичок в разработке под Android и пытаюсь создать очень простое приложение, которое будет просматривать мою сеть на наличие серверов DLNA и позволять мне просматривать каждый сервер DLNA как каталог. Идея довольно проста: одно действие отображает все серверы DLNA в сети, пользователь выбирает один, а затем мы перенаправляем на другое действие, которое просматривает каталоги медиа-сервера DLNA.

Мой вопрос довольно простой: как мне сохранить информацию, такую ​​как "выбранный сервер", "текущий каталог" и другие подобные вещи? Мне просто нужно, чтобы остальная часть моего приложения знала, что делать. Должен ли я встроить эти данные в службу? Кажется, что это нарушает общее понимание того, какие услуги должны быть. Как я могу / должен сохранить состояние приложения?

1 ответ

Решение

У вас есть несколько вариантов. Мне больше всего нравится то, что вы просто передаете эти значения в объекте Intent, который вы отправляете от одного действия к другому. Таким образом, действие, которое просматривает каталоги медиа-сервера DLNA, получает выбранный сервер в намерении, и если это произошло из действия со списком DLNA, это здорово, но намерение может исходить из любого другого действия, которое хочет показать каталоги медиа-сервера для пользователь. Старайтесь изо всех сил инкапсулировать функциональность внутри действия, чтобы данные не зависели от остальной части приложения.

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

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

Чтобы ответить на другой вопрос, вы должны не только использовать службы для доступа к сети, но и создавать потоки. Служба Android по умолчанию не включает фоновый поток, вам нужно сделать это самостоятельно. Вы никогда не должны делать сетевые вызовы из основного потока (он же UI).

Другие вопросы по тегам