Должен ли я использовать Сервис как способ доступа к сетевым данным? - PullRequest
0 голосов
/ 10 февраля 2011

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

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

1 Ответ

2 голосов
/ 10 февраля 2011

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

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

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

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

...