2015-07-05 4 views
0

Я пишу приложение, которое имеет виджет поиска, и я использую конфигурацию searchable.xml и SearchActivity для поиска и отображения результатов, ожидающих запроса от виджета SearchView в соответствии с этим руководством: http://developer.android.com/guide/topics/search/search-dialog.html Все работает отлично, однако существует некоторая задержка между тем, как пользователь нажимает кнопку ввода для поиска, и время, пока отображается функция SearchActivity. Я прокомментировал алгоритм поиска и оставил только текстовое представление в SearchActivity, но отставание все еще было. Возможно ли запустить SearchActivity в другом потоке или что-то еще подобное, чтобы отображать SearchActivity только тогда, когда он полностью инициализирован?Как запустить функцию поиска в другом потоке?

+0

Так что задержка не из-за вашего поиска алгоритм? –

+0

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

+0

У вас работает в симуляторе? –

ответ

0

AsyncTask используется, чтобы сделать процесс, который вы хотите отделить от пользовательского интерфейса и отображения результата в интерфейсе

См:

Async Task

+0

Поиск и ожидание результата async-задачи также будет означать задержку. потому что метод 'get()' будет ждать завершения задачи. [см. здесь] (http://developer.android.com/reference/android/os/AsyncTask.html#get%28%29) –

+0

Использование задачи Async разрешило проблему, но создало другую. Мне нужно немедленно отменить запущенную задачу и начать новую, если пользователь решает сделать новый поиск, пока предыдущий не завершил. Вызов отмены() в Async Task отменяет его как можно скорее, но не сразу, что не достаточно для меня. Я закончил использование класса Executor. – user3282954

+0

Хорошо, что вы использовали класс Executor. Удивительный ход. Пожалуйста, добавьте это как ответ, чтобы он мог помочь другим –