1. Постачальники вмісту не захищені від потоків
За промовчанням постачальники вмісту не захищені від потоків. Якщо у вас є кілька потоків із використанням постачальника вмісту, ви можете побачити безліч різних винятків та інші невідповідності даних. Найпростіший спосіб виправити це - використовувати синхронізоване ключове слово для кожного із загальнодоступних методів, виставлених постачальником вмісту.
Таким чином, лише один потік одночасно може отримати доступ до цих методів.
2. Грайте приємно, роблячи багато записів
Мені потрібно в новій програмі Serval Maps імпортувати дані з двійкових файлів у базу даних, яка використовується внутрішньо додатком. Для того, щоб зробити це та приємно пограти з рештою програми, найкраще:
Створіть новий потік для імпорту, щоб інші потоки не зазнали негативного впливу, зокрема потік, який відповідає за оновлення інтерфейсу користувача; та коротко зупиніться в кінці кожного імпорту, щоб надати іншим потокам, які мають більше шансів використовувати синхронізовані методи.
3. Постачальники контенту змушують вас часом думати побічно
Спосіб роботи постачальників вмісту в Android полягає у забезпеченні рівня абстракції між рештою коду та базовою базою даних. Це головним чином пов’язано з тим, наскільки я можу зрозуміти, що постачальники вмісту можуть отримувати доступ до даних з інших місць, крім баз даних.
Це означає, що ви не можете виконувати необроблені запити SQL в базовій базі даних, і вам потрібно вказати різні компоненти запиту SQL, використовуючи змінні, передані різним методам, таким як метод запиту. Якщо у вас є завдання, яке не відповідає способу обробки SQL постачальником даних, у вас є два варіанти:
Подумайте з боком про запит, можливо, ви зможете отримати необхідні дані за допомогою альтернативних запитів та доступу до результатів за допомогою курсору; та Використовуйте URI для нормального доступу до даних та спеціальний URI, який відповідає певному запиту для тих завдань, які не мають альтернатив.