2015-01-09 4 views
-1

У меня есть приложение, которое хранит данные в базе данных SQLite. Основная деятельность - это просто экран с одной кнопкой. Когда пользователь нажимает на эту кнопку, открывается вторая активность. Второе действие - это список (ListActivity), который должен содержать все записи из базы данных. Вот вопрос: какие подходы подходят лучше: 1) когда кнопка нажата, запустите AsyncTask, в методе doInBackground вытащите данные из базы данных и отправьте вытащенные данные во вторую активность в виде разборного массива или 2) начните второе действие, в методе onCreate вытащить данные из базы данных и отобразить индикатор выполнения при выборе данных. Я считаю, что это не основано на первичном мнении, и должны быть ценные плюсы и минусы. Но я новичок в Android, и я изо всех сил стараюсь найти лучший подход для этого. Спасибо за внимание.Начать работу при извлечении данных из базы данных

+0

Все зависит от того, хотите ли вы, чтобы данные были предварительно заполнены во второй активности или нет. Но если бы я был вами, я предпочел бы второй вариант. – Rohit5k2

+0

Итак, это вопрос Ux, но не производительности? Я просто боюсь замедлить скорость загрузки новой активности. – olyv

+1

Если ее локальная БД вы не увидите никакой разницы в загрузке. Но если вы хотите, чтобы ваш второй актив был предварительно взят, используйте первый подход. – Rohit5k2

ответ

1

Первый подход не является удобным. Потому что, когда пользователь нажимает кнопку, чтобы открыть различную активность (с точки зрения пользовательского интерфейса), пользователь за исключением того, чтобы показывать переход, а не застрял в первом действии. На самом деле это зависит от вашего дизайна UX приложения. Также первый подход имеет и другую проблему. Если вы загружаете данные в первую активность, вам необходимо передать многие данные при вызове другого действия.

Используйте слегка модифицированный второй подход. Сначала запустите второе действие, затем вызовите AsyncTask (в методе onCreate) для загрузки данных.

+0

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

-1

Ну, я думаю, что лучше всего запускать AsyncTask при нажатии кнопки и обрабатывать данные в doInBackground, как вы сказали. В onCreate() второго индикатора прогресса acivity, а в doInBackground() отправляют данные и отображают элементы. Кажется, это лучший результат.

+0

Как именно это повлияет на производительность? Его просто опыт пользовательского интерфейса. – Rohit5k2

+0

Перед вызовом метода onCreate(), некоторые думают, что происходит, и некоторое время проходит. Если вы запускаете AsyncTask раньше в первой игре, вы должны получить результат быстрее. По крайней мере, я так думаю. – Wiertek

+0

Операция локальной БД не показала существенных различий. Если бы это был внешний вызов, я бы согласился с вами. – Rohit5k2

Смежные вопросы