Обработка запросов к серверу и ротации устройств - PullRequest
0 голосов
/ 21 ноября 2010

Я много читал об обработке ротации в приложениях для Android, но у меня все еще так много вопросов и мне нужно многое понять.

Позвольте мне объяснить мою проблему или реализацию, которую я сейчас использую в своемapplication.

Если действие будет открыто, запрос на получение будет отправлен на сервер.Этот запрос будет выполнен в потоке (новый поток (...)), и если запрос был выполнен, пользовательский интерфейс действия будет обновлен.

Но что мне делать, если пользователь поворачивает свое устройство?

По умолчанию действие будет уничтожено, и запрос будет запущен снова и запустит новый поток, но поток уничтоженного действия может все еще выполняться.

Я полагаю, это совершенно неправильноКстати, у меня сейчас.

Но как лучше всего справиться с этим?

Вероятно, это лучший способ запретить вращение, но что, если я этого не хочу?!

Майбудь то вторая часть моего вопроса:

Я видел видео форму Google IO .Г-н Добянский предложил использовать сервисы и хранить полученные данные в контент-провайдере.Так что, вероятно, я могу использовать сервис для выполнения моих запросов.Но следует ли заменять данные каждый раз при завершении запроса на получение?!

Ответы [ 3 ]

0 голосов
/ 21 ноября 2010

Вы можете указать, что действие обрабатывает сам поворот. Это делается путем добавления:

android:configChanges="keyboardHidden|orientation"

в теге активности внутри вашего манифеста Android. Вы не должны фактически управлять вращением, но это скажет андроиду не разрушать вашу деятельность. Базовый класс активности будет обрабатывать все изменения пользовательского интерфейса, и ваш поток будет выполнен правильно.

Небольшое примечание: если вы выполняете только небольшую серверную задачу, используйте AsyncTask для выполнения вызова к серверу в фоновом режиме вместо создания потока. Это сведет к минимуму некоторые усилия по программированию, необходимые для передачи результатов из потока в действие и обновления вашего пользовательского интерфейса.

0 голосов
/ 21 ноября 2010

Один простой способ, хотя я никогда не пробовал.Вместо обновления текущего пользовательского интерфейса, когда поток завершается, начните новое действие с только что загруженным содержимым.Итак, сначала вы запускаете действие с пустой страницы (или только фрейма страницы), затем поворачиваете пустую страницу столько раз, сколько хотите, затем поток загрузки порождает новое действие, заменяя пустую страницу действие загруженной страницей содержимого.используя текущую ориентацию.

0 голосов
/ 21 ноября 2010

Ну, не знаю точно, как это делается. Вы можете попытаться сохранить экземпляр и получить его, когда конфигурация изменится, следующими способами:

Я читал о них, но пока не реализовал их.Я надеюсь, что это может дать вам некоторое начало.

@Override
public Object onRetainNonConfigurationInstance() {
return(myServerThread);
}

private void restoreServerFunctions() {
if (getLastNonConfigurationInstance()!=null) {
myServerThread=(Thread)getLastNonConfigurationInstance();
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...