Деятельность не начнется, пока данные не будут извлечены с сервера MySQL - PullRequest
0 голосов
/ 30 августа 2011

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

Я пытался передать миссию по доставке данных с сервера в службу, но он также ожидает извлечения данных и только затем показывает макет Activity.

Я также попытался выполнить действие с фиксированным текстом, а затем вызвал Activity, который извлекает данные с сервера, но программа все еще ожидает эти данные.

Можете ли вы найти креативное решение для него? или, может быть, не креативный тоже:)

Ответы [ 4 ]

1 голос
/ 30 августа 2011

вы можете использовать asynctask для этого:

http://developer.android.com/reference/android/os/AsyncTask.html

или вы можете показать пользователю ожидающий диалог, пока вы не получите свои данные (сделайте это в отдельной ветке) .....

или вы можете реализовать заставку, и там вы можете получить данные .....

0 голосов
/ 30 августа 2011

Вы упомянули, что попробовали услугу, но взглянули ли вы на IntentService?(Пока не могу связать его, но он находится на d.android.com.) Мне нравится использовать их для таких задач, потому что они обрабатывают потоки для вас (например, AsyncTask), и это лучше разделяет проблемыЗатем IntentService отправляет широковещательное сообщение, которое получает действие, указывающее, доступны ли данные или нет.Храните данные локально в sqlite db или в файле json / xml.

0 голосов
/ 30 августа 2011

Задержка, вероятно, связана с вызовом для извлечения данных, выполняемых в основном потоке, также называемом потоком пользовательского интерфейса.Процессы, которые занимают какое-то значительное время, и под этим я подразумеваю, что даже секунда или две должны быть выполнены в отдельном потоке.Android предоставляет класс AsyncTask, который помогает сделать процесс безболезненным.

0 голосов
/ 30 августа 2011

Вы должны сделать это внутри другого потока.Попробуйте использовать класс AsyncTask.

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