Возобновить активность с помощью кнопки назад - PullRequest
2 голосов
/ 19 апреля 2010

У меня есть приложение, которое я создаю с помощью DashboardActivity и a Settings Settings. На панели инструментов у меня отображается один объект, но когда я захожу в настройки, я хочу иметь возможность выбрать / отменить выбор параметров X. Когда пользователь нажимает кнопку «Назад», я сохраняю эти данные локально и на сервере. Как только телефон получает сообщение об успешном завершении работы с сервера, он был правильно сохранен, я хочу перезагрузить панель управления.

Я думал, что сделаю это с onPause и onResume, но они вызываются при первом создании DashboardActivity. Как лучше всего перезагрузить панель мониторинга, позвонив в мой веб-сервис после сохранения настроек на сервере? Вот что я делаю, когда нажимаю кнопку «назад»

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    //Save data to the server once the user hits the back button
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        SchoolSearchActivity.this.divisionProxy = new DivisionProxy(SchoolSearchActivity.this.saveUserDivisionHandler);
        SchoolSearchActivity.this.divisionProxy.submitUserDivisions(SchoolSearchActivity.this.userDivisions, SchoolSearchActivity.this.user_id);
        //SchoolSearchActivity.this.finish();
        //Toast.makeText(SchoolSearchActivity.this, "Divisions Saved",Toast.LENGTH_LONG).show();
    }
    return true;
}

Вышеуказанное открывает HTTP-соединение, и когда ответ получен, обработчик обрабатывает ответ. Я бы хотел: 1) отправить данные на сервер 2) вернуться к предыдущему виду деятельности 3) показывать диалог прогресса до тех пор, пока не вернется ответ от # 1 (обработчик ответа находится в действии настроек; и теперь мы находимся в действии панели мониторинга) 4) «обновить» приборную панель

Каков наилучший способ сделать это, чтобы я мог просто возобновить панель инструментов, как это было. Как я уже сказал, когда я перезаписываю метод onResume, он вызывается при первом создании действия. Я думал о том, чтобы поместить свой вызов веб-службы в onResume, поэтому он вызывается один раз каждый раз, когда вы делаете это в Activity, но это не самый чистый способ.

Что бы вы предложили для 1-4?

1 Ответ

1 голос
/ 19 апреля 2010

Вы можете создать подкласс Application и установить флаг, чтобы показать, что ваши текущие кэшированные данные «грязные». Вы создаете свой собственный подкласс Application для хранения переходного глобального состояния приложения, которое именно то, что вы хотите здесь. Когда пользователь меняет свою конфигурацию в SettingsActivity, вы устанавливаете флаг на уровне приложения, а затем в onResume() вы можете проверить флаг и вызывать веб-службу только тогда, когда вы знаете, что пользователь что-то изменил.

В качестве альтернативы, когда вы можете установить для DashboardActivity режим запуска singleTop , а затем с помощью вызова startActivity() перейти от SettingsActivity к DashboardActivity, если настройки изменились. Если DashboardActivity равен singleTop, то новый экземпляр не будет создан, а новый Intent будет передан методу onNewIntent() , и вы сможете перезагрузить настройки там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...