1. 콘텐츠 제공자는 스레드로부터 안전하지 않습니다.
기본적으로 콘텐츠 공급자는 스레드로부터 안전하지 않습니다. 콘텐츠 제공 업체를 사용하는 여러 스레드가있는 경우 다양한 예외가 발생하고 기타 데이터 불일치가 발생하는 것을 볼 수 있습니다. 이 문제를 해결하는 가장 쉬운 방법은 콘텐츠 공급자가 노출하는 각 공용 메서드에서 동기화 된 키워드를 사용하는 것입니다.
이런 식으로 한 번에 하나의 스레드 만 이러한 메서드에 액세스 할 수 있습니다.
2. 많은 글을 쓸 때 멋지게 플레이
새로운 Serval Maps 애플리케이션에서 바이너리 파일의 데이터를 애플리케이션에서 내부적으로 사용하는 데이터베이스로 가져올 필요가 있습니다. 이 작업을 수행하고 나머지 응용 프로그램을 잘 활용하려면 다음을 수행하는 것이 가장 좋습니다.
가져 오기를 수행 할 새 스레드를 생성하여 다른 스레드, 특히 UI 업데이트를 담당하는 스레드에 악영향을 미치지 않도록합니다. 그리고 동기화 된 메서드를 더 많이 사용해야하는 다른 스레드를 제공하기 위해 각 가져 오기가 끝날 때 잠시 일시 중지합니다.
3. 콘텐츠 제공자는 때때로 옆으로 생각하도록 강요합니다.
Android의 콘텐츠 제공 업체가 작동하는 방식은 나머지 코드와 기본 데이터베이스간에 추상화 계층을 제공하는 것입니다. 이것은 주로 콘텐츠 제공자가 데이터베이스가 아닌 다른 곳에서 데이터에 액세스 할 수 있다는 사실에 기인합니다.
즉, 기본 데이터베이스에서 원시 SQL 쿼리를 실행할 수 없으며 쿼리 메서드와 같은 다양한 메서드에 전달 된 변수를 사용하여 SQL 쿼리의 다양한 구성 요소를 지정해야합니다. 콘텐츠 공급자가 SQL을 처리하는 방식에 맞지 않는 작업이있는 경우 두 가지 옵션이 있습니다.
쿼리에 대해 옆으로 생각해보십시오. 대체 쿼리를 통해 필요한 데이터를 얻고 커서에서 결과에 액세스 할 수 있습니다. 데이터에 정상적으로 액세스하려면 URI를 사용하고 대안이없는 작업에 대해서는 특정 쿼리와 일치하는 특수 URI를 사용합니다.