синхронизированные методы в Android - PullRequest
2 голосов
/ 10 июня 2011

У меня есть два занятия. В упражнении 1 я записываю значение в базу данных SQLite, вводя это значение в поле EditText. Как только я нажимаю кнопку отправки, данные записываются, и я перемещаюсь к другому занятию - занятию 2. Упражнение 2 также делает то же самое: я могу записывать новые данные и сохранять их в базе данных одним нажатием кнопки. Итак, мой вопрос: нужно ли синхронизировать метод (который находится в отдельном потоке от пользовательского интерфейса) в действии 1, а также метод в действии 2, чтобы предотвратить проблемы безопасности потоков в базе данных? Помните, что оба метода обращаются к одной и той же базе данных, но из разных действий. Технически, операция 1 должна быть завершена с вызванным onStop и новым видом деятельности (операция 2), которая теперь видна. Возможно ли, чтобы эти два действия и их соответствующие потоки, обращающиеся к базе данных (различными способами), имели какие-либо проблемы с параллелизмом, учитывая жизненный цикл активности Android?

Большое спасибо, Matt

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Проверьте этот метод

SQLiteDatabase.setLockingEnabled(boolean lockingEnabled)
0 голосов
/ 10 июня 2011

Как создается ваш фоновый поток?Фоновый поток будет продолжать работать даже после того, как действие было остановлено.

Если данные в действии 2 не будут сохраняться до тех пор, пока пользователь не введет некоторые данные, тогда кажется, что блокировка будет ненужной, учитывая тот факт, чточто данные из действия 1 должны сохраняться в течение нескольких миллисекунд.

Однако, если вы готовитесь к худшему сценарию, я не вижу, как блокировка базы данных может повредить чему-либо (как предположил @Pepi).Единственный способ понять, что это проблема, - это если работа, выполняемая в фоновом потоке (действие 1), висит на чем-то, прежде чем он сможет зафиксировать данные.Если действие 2 запускает свой собственный фоновый работник для фиксации данных, то вы потенциально можете столкнуться между этими двумя фоновыми потоками.

...