#android #sql
#Android #sql
Вопрос:
Я пишу приложение для клавиатуры для Android и использую строковые значения ключей в базе данных SQL.
Вот пример строки для одного ключа. Во всей базе данных у меня примерно 160 таких строк.
(BTNID,TEXTADJUST,BUTTONSCALE,BUTTONSCALECNT,SPACINGLR,SPACINGTB,BTNOPA,BTNTEXT,BTNTEXTONCLICK,BTNTEXTONSHIFTCLICK,BTNTEXTCOLOR,BTNHUE,BTNSAT,LAYOUTSTDALTNUM,ATROW,BTNHUEHIT) VALUES('1','0','1','1','2','5','255','Q','qQ','Qq','0xFFFFFFFF','0','0','STD','1','0')
Я читаю эти значения по
TBL_NAME = preferences.getString("TBL", "EnglishZLayout");
SqlHelper sqlHelper = new SqlHelper(this, "TK.db", null, 1);
SQLiteDatabase DB = sqlHelper.getReadableDatabase();
String TBL_NAME_BTN = TBL_NAME.replace("ZLayout", "ZButtons");
Cursor c = DB.rawQuery("SELECT * FROM " TBL_NAME_BTN, null);
c.moveToFirst();
while (c.isAfterLast() == false) {
...
и, как ни странно, загрузка занимает около 20-30 секунд. Есть идеи, как это ускорить?
Я не могу хранить значения ключей в приложении, поскольку пользователь должен иметь возможность их изменять.
Спасибо!
Комментарии:
1. Хммм … кажется, что-то не так. SQL обычно никогда не занимает так много времени. Какая работа здесь выполняется?
2. Вы уверены, что это (только) запрос, который занимает так много времени? 20 секунд кажутся намного выше нормы, даже на эмуляторе… Вы пробовали (только) очень простой вывод журнала в цикле курсора и тестировали это на реальном устройстве?
3. Ну, он также рисует кнопки в векторной форме и т. Д. Но Это не займет много времени, так как, когда я переключаюсь с уже загруженным макетом, они появляются мгновенно.
4. Я делаю это на реальном устройстве, nexus S.
5. Да, похоже, вы правы. Я удалил все остальное из цикла, и он сработал в кратчайшие сроки. :/ Поэтому придется оптимизировать часть векторного рисования.
Ответ №1:
Вы же не воссоздаете DB helper каждый раз, когда выполняете запрос, не так ли? Сделайте это один раз при запуске приложения.
Ответ №2:
Чтобы превратить мой комментарий в «ответ» для всех, кто может найти этот пост:
- Попробуйте цикл без фактического кода рисования кнопок … вы, вероятно, увидите, что SQL не является проблемой