Стоит ли размещать (онлайн) запросы к базе данных в Android в отдельном потоке, и что должен отображать пользовательский интерфейс? - PullRequest
1 голос
/ 27 августа 2011

У меня есть несколько вопросов о выполнении запросов SQL (к онлайн-базе данных) из приложения Android.

Так как это сетевые операции и они дорогостоящие, я должен делать их в отдельном потоке? Кроме того, что я должен показывать пользователю (UI) во время обработки этих запросов?

Ответы [ 2 ]

3 голосов
/ 27 августа 2011

Я предлагаю вам использовать AsyncTask.В методе doInBackground() вы будете загружать / обрабатывать вещи.В onPostExecute() вы будете отображаться в пользовательском интерфейсе.Это вкратце.Исследовательская база по AsyncTask для получения дополнительной информации.

2 голосов
/ 27 августа 2011

Первый ответ хорош в отношении AsyncTask.Если это ДЕЙСТВИТЕЛЬНО длинные запросы, я бы поместил их в службу и сообщил бы о действии с помощью широковещательной рассылки, но если они просто «длинные по сети», тогда Async хорош.ВСЕ хотят использовать диалоговое окно ожидания, но этот тип пользовательского интерфейса, как правило, отстой.Он блокирует все, поэтому, если вы не можете получить ответ или что-то еще, пользователь застрял.Недавно я просмотрел приложение для кого-то, и поскольку наша сеть работала медленно, время ожидания в окне оповещения составило 47 секунд.Любая идея, как долго это ощущается для пользователя?

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

Я пытаюсь выполнить все удаленные операции в службе, даже если это не является абсолютно необходимым.Разговаривайте с трансляциями.Это только я;)

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