Я новичок в Android.Я пытаюсь написать приложение, которое будет отображать несколько частей информации об открытых магазинах.Я получаю эту информацию, используя RESTfull API, который передает данные JSON.
Вот мой вопрос: Каков наилучший вариант реализации сервиса / потоков?Вот мои требования к продукту:
• Я хочу инкапсулировать все API и JSON в класс, который может вызывать одна или несколько Android «Деятельности».Я думаю, что это может диктовать службу, но эта служба должна будет работать только во время работы моего приложения и не будет доступна другим приложениям.Пользователь должен будет пройти аутентификацию в удаленной системе через RESTfull API.
• Он должен быть в отдельном потоке, поскольку вызовы API могут занимать слишком много времени.Я не думаю, что он должен быть многопоточным, поскольку я не вижу, чтобы более чем одно «действие» одновременно взаимодействовало со службой.
• Служба должна смотреть на кэширование некоторыхинформация, которую он возвращает, так что, когда «Activity» выполняет вызов (например, «GetStoreList»), он может вернуть список магазинов, к которым он уже запрашивал ранее.Я не уверен, стоит ли мне хранить эту информацию в памяти или использовать функцию SQLite в Android.У меня могло быть несколько сотен магазинов в списке с десятью-двенадцатью другими частями информации, связанной с каждым магазином.Часть этой информации будет отображаться в списке «Активность», а другая - нет.Поскольку у меня нет никакого опыта работы с SQLite, я не уверен, что затраты на производительность будут выше, чем хранение информации в памяти.
• Будет около дюжины или около того методов, которые понадобятся службезаключать в капсулу.Например: как только я получу список магазинов, я, возможно, захочу снова вызвать API, чтобы узнать, открыт ли магазин в данный момент.Часть передаваемой информации будет являться пользовательскими классами и, следовательно, потребует определения классов «Parceable», если мне придется использовать IPC как часть моего решения (если я правильно понимаю документацию Android).
• Я также хотел бы«Ленивая загрузка» списка в мою «Активность», чтобы мне не пришлось ждать полного списка перед обновлением пользовательского интерфейса.
Возможные решения (это все догадки, поэтому, пожалуйста, неt распни меня ... вот почему я задаю вопрос):
Я мог бы использовать класс, расширенный от «Service». Он должен был бы сам обрабатывать потоки, чтобы длинные интернет-вызовычерез RESTful API не зависнет система.В качестве альтернативы, я мог бы сначала выполнить манипулирование потоками и вызвать API, предполагая, что я могу занять столько времени, сколько захочу.Я думаю, что мне нужно было бы реализовать связь между «Деятельностью» и сервисом через IPC.Это кажется немного сложным для меня.Я не уверен, что смогу использовать класс Messenger.Это выглядит проще, чем AIDL.
Думаю, я мог бы использовать «IntentService».Это автоматически создаст отдельный поток и поставит в очередь сообщения / задачи.Я думаю, что я мог бы связаться со службой (например, чтобы получить списки магазинов), «привязав» к службе.Проблема, которую я вижу, заключается в передаче данных взад и вперед, и я не уверен, как я буду кэшировать данные между вызовами API, поскольку служба завершает работу после вызова API.
В любом случаеЯ предпочел бы учиться у кого-то, кто уже сделал этот тип приложения, вместо того, чтобы делать это неправильно и дважды его кодировать.Спасибо за помощь.