Отображение экрана загрузки во время запроса на обслуживание REST в приложении для Android? - PullRequest
1 голос
/ 18 февраля 2011

В настоящее время вот что я следую, Как только мое приложение запущено, я должен отправить запрос на обслуживание REST, Это займет немного времени, поэтому я подумал показать экран загрузки,

В onCreate() моей Деятельности первым делом будет показывать экран загрузки (диалог прогресса), И я запускаю фоновую активность с помощью AsyncTask, то есть запрашиваю службу REST и onPostexecute() Я закрываю диалоговое окно, а затем выполняю setContentView(myxml); и обновляю пользовательский интерфейс.

Можно ли улучшить этот подход?

Проблема, с которой я столкнулся, была

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

Но иногда даже ForceClose не работает быстро, возможно, из-за GC. поэтому я даже не могу вернуться и застрял в загрузочном экране. Единственное, что я могу сделать в этот момент, это вернуться домой. После этого, если я вернусь к своему приложению, оно все еще загружается, так что определенно такой подход кажется плохим. Какой правильный подход?

Ответы [ 3 ]

1 голос
/ 18 февраля 2011

Вы можете реализовать заставку, как я сделал здесь

Это в основном запускает асинхронную задачу, которая показывает заставку, выполняя работу в doInBackground() строке 51) и затем переадресация к следующему действию.

1 голос
/ 18 февраля 2011

Если вы ожидаете, что ваш вызов REST займет значительное время, возможно, вам также следует рассмотреть возможность использования службы вместо асинхронной задачи.Зачем?Поскольку при каждом изменении ориентации ваша деятельность будет разрушаться, и новая асинхронная задача будет создаваться снова, поэтому вызов REST выполняется снова с самого начала.С другой стороны, при использовании сервиса вы можете выполнить вызов REST один раз и только отслеживать его состояние в активности (что требует от вас правильной обработки функций onPause, onCreate).

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

0 голосов
/ 18 февраля 2011

Вы смотрели видео Google I / O 2010 - клиентские приложения REST для Android?на странице http://developer.android.com/videos/index.html

...