2012-02-03 2 views
3

У меня есть контент-провайдера, который собирается из некоторых источников записей в облаке и делать запросы, результаты будут добавлены ссылки курсора, который передается в те классыли курсор поточно в Android

WebSearch1.addCursor(mContext, cursor, projection, filter); 
WebSearch2.addCursor(mContext, cursor, projection, filter); 

Отлично работает, но он асинхронен, хотел бы запустить его в async task/thread, чтобы улучшить время отклика. Я мог бы создать курсор для каждого из источников, а затем добавить их в MergeCursor. Не так уж и сложно сделать это, но просто интересно, если курсор является потокобезопасным, чтобы передать два разных потока, чтобы синхронно добавить курсор.

Спасибо,

+0

добавить к курсору асинхронно? – L7ColWinters

+0

также объект sqlitecursor или другой? – L7ColWinters

+0

это MatrixCursor извините, и я хочу, чтобы два потока добавляли к MatrixCursor одновременно. – Chrispix

ответ

3

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

+1

Внутри «курсора» есть только один неявный указатель текущей строки. Два разных потока не могут работать в двух разных строках одновременно. Хотя можно утверждать, что при достаточно крупнозернистой синхронизации вы можете обойти это, я бы сказал, что «Курсор» практически однопоточен на практике. – CommonsWare

+1

Довольно много задач async для каждого из курсоров, а затем использовал MergeCursor, как только все было сделано. – Chrispix

+0

жаль, что я не мог помочь – L7ColWinters

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