Что касается проблемного указанных ниже я пришел к точке, где я должен принять решение о том, чтобы:Обмен данными между различными видами деятельности, Asynctasks и услуг
- Начало службы один раз, что имеет AlarmManager, внутри которого затем запускает запрос каждые 10 минут. Эта служба будет остановлена только в том случае, если пользователь установит переключатель «Onn-Off» в положение «Off».
- Используйте AlarmManager для запуска IntentService каждые 10 минут. Эта служба будет запускаться только при необходимости и после этого закрылся
Какой из этих способов лучше, когда речь идет о: - Возможность обмена данными, полученными с помощью службы (или Intenservice) с другими видами деятельности/услуги - Использование аккумулятора - В целом «хорошие привычки кодирования»?
Спасибо!
Оригинал Вопрос:
Я довольно новый Android Developer и столкнулись с ситуацией, что я не знаю, как решить. Я уже несколько дней искал решение, но не смог его найти.
При попытке разработать мою первую идею приложения я начал играть с получением и анализом данных из Интернета. До сих пор я добился создания запроса, который получает данные JSON через API и анализирует этот JSON. Все это делается внутри AsyncTask. Полученные данные затем отображаются на экране.
Однако, для моей идеи приложения, мне нужно, чтобы это было сделано в фоновом режиме. О чем я думал:
- Запуск службы, которая в значительной степени имеет ту же логику, что и моя Asynctask. Управляемый AlarmManager, эта служба затем запрашивает, получает и анализирует данные за определенный промежуток времени.
Теперь начинается сложная часть: Данные, которые я получаю (допустим, каждые 10 минут), используются для изменения будильника. Итак, в качестве простого примера, допустим, пользователь может установить будильник в 08:00 утра. Затем приложение проверяет текущую температуру каждые 10 минут и изменяет время будильника на 07:45, если температура ниже 0 ° celcius, потому что пользователь должен просыпаться раньше, чтобы очистить лед от его автомобиля. Кроме того, при «пробуждении» приложения в пользовательском интерфейсе должна отображаться текущая (или, скорее, последняя принятая) температура.
Что было бы лучшим способом достичь этого? У меня возникают некоторые проблемы, связанные с передачей/получением данных из AsyncTasks/Services в/из деятельности.
Мой первый подход состоял бы в том, чтобы запустить единую службу из MainActivity, передав некоторые данные Сервису (например, в начальный момент запуска будильника и текущее местоположение пользователя). Затем Служба имеет два отдельных диспетчера AlarmManager. Один из них настроен на выполнение фактического сигнала тревоги (пробуждение пользователя утром), а другой управляет временным интервалом получения данных из Интернета.
Мои вопросы: - Разве мой ход мысли имеет какой-то смысл до сих пор? - Каков наилучший способ передачи и приема данных в/из службы? Мое лучшее предположение заключалось бы в том, чтобы использовать намерения для передачи, и передатчик для приема данных из службы. будет ли это иметь смысл в этой конкретной ситуации?
Я боюсь, что это не приветствуется, чтобы публиковать вопросы, не прилагая при этом никаких усилий. Хотя я не добавлял никакого реального исходного кода, надеюсь, вы увидите, что я уже давно занимаюсь этими вопросами, но не смог начать кодирование, прежде чем узнаю структуру приложения.
Заранее спасибо