Мне интересно, являются ли подготовленные операторы в Android (экземпляры SQLiteStatement) поточно-ориентированными.В частности, я спрашиваю относительно следующего сценария:
В ContentProvider вы создаете предварительно скомпилированный оператор вставки во время onCreate.Затем в переопределенном методе вставки вы используете этот оператор, привязывая к нему набор параметров и вызывая для него executeInsert.
Мы знаем, что ContentProvider должен быть написан потокобезопасным способом.Если SQLiteStatement не связывает параметры для каждого потока, одновременный вызов метода вставки провайдера изменит привязки оператора и приведет к непредсказуемому поведению.
Собственный поставщик контактов Android использует подготовленные операторы таким образом (http://bit.ly/bDuKAT), поэтому я склонен полагать, что они на самом деле поточнобезопасны. Глядя на исходный код SQLiteStatement, я не вижу, каким образом (http://bit.ly/9M1Swv).
Итак, является ли SQLiteStatement (или SQLiteProgram, который является) потоком-безопасен в отношении привязки параметров или нет?