Я реализовал IntentService, который извлекает данные с моих серверов и возвращает результат в виде JSON через ResultReceiver, который предоставляется службе через намерение.Сохранение пользовательского интерфейса с обслуживанием
Моя проблема заключается в обновлении пользовательского интерфейса с состоянием служб, например, при входе на мой сервер через эту службу, если я хочу сказать пользователю, что программа работает над входом в систему, я бы хотел показать диалог выполнения, но что происходит, когда кто-то звонит, пока служба по-прежнему извлекает данные, пользователь поворачивает телефон или меняет активность?
Я не хочу оставлять пользователя, который смотрит на экран с кнопкой входа в систему, и когда логин завершен, он просто показывает тост, указывающий состояние, я хочу, чтобы пользователь уведомлял о текущем состоянии.
Как я могу обрабатывать диалог прогресса, не создавая сотни строк дублированного кода при обращении к моему сервису?
В настоящее время на моем LoginActivity после пользователь хочет войти в его вызывает функцию входа в моем ApiAccessor который обрабатывает сообщающийся с обслуживанием и регистрирует функцию обратного вызова, когда результат возвращается таким образом:
ProgressDialog dialog;
dialog = ProgressDialog.show(this, "Please wait..", "Logging in..");
accessor.login(usernameField.getText().toString(), passwordField.getText().toString(), new ApiCallback() {
@Override
public void onResponse(ApiResponse response) {
dialog.dismiss();
}
});
, но теперь я должен обрабатывать отклонение и повторный диалог в onPause, onResume и onDestroy тоже, и я должен делать это в каждом действии!
Каков общий способ поддержания пользовательского интерфейса в актуальном состоянии с помощью состояния службы?
Это действительно не изменит текущую ситуацию, не так ли? Я все равно должен был бы потерять дублированный код, чтобы справиться с таким, как правильно показывать диалог выполнения? Это, вероятно, даже усложнит ситуацию, потому что IntentService уже много работает для меня, и не предполагается ли она выполнять только одну задачу и возвращаться? – Ruuhkis
'Каков общий способ удержания пользовательского интерфейса до состояния службы или так?», Это связующее, сервис будет всего одним (ничего не дублирует), а действия просто привязываются к работающим службам (возможно, не должно быть IntentService , пришлось бы анализировать более подробно). Что касается реализации его во всех действиях, вы можете сделать слушателем отдельный объект из активности, но инициализироваться им. Вы можете сделать абстрактную базовую активность, которая выполняет код, а остальные расширят ее. Есть способы! Но для этого нужно провести надлежащий анализ всей системы, чтобы определить, какой способ делать. – Budius
Спасибо, была проблема с моим мышлением о привязке к сервисам, решила мою проблему. :) – Ruuhkis