mobile menu

The Arrow Newsletter

mobile menu

컨텐트 프로바이더 예제

기존 데이터베이스 테이블 행에 대한 변경이 요청될 때 콘텐츠 공급자의 update() 메서드가 호출됩니다. 메서드는 URI, ContentValues 개체 의 형태로 새 값 및 일반적인 선택 인수 문자열을 전달합니다. 이 예제에서는 응용 프로그램과 사용자 상호 작용을 위해 세 가지 기능(삭제AllBirthdays(보기 보기), addBirthday(보기 보기), showAllBirthdays(보기 보기))를 추가합니다. 사용자는 공급자에 새 레코드를 추가하거나 모든 레코드를 삭제하거나 표시할 수 있습니다. 열기 src/com.javacodegeeks.android.contentprovidertest/MainActivity.java 다음 코드를 붙여넣습니다. MainActivity.java: 이 플래그가 false로 설정된 경우 요소에 자식 요소를 추가해야 합니다. 각 자식 요소는 임시 액세스가 부여된 콘텐츠 URI 또는 URI를 지정합니다. 콘텐츠 공급자의 데이터에 액세스하려면 응용 프로그램에서 ContentResolver 개체를 사용하여 공급자와 클라이언트로 통신해야 합니다. ContentResolver 개체는 클래스 인스턴스에 의해 구현되는 공급자 개체(ContentProvider)와 통신합니다. 모든 구성 요소와 마찬가지로 안드로이드는 또한 콘텐츠 제공 업체의 생성 및 파괴를 관리합니다. 그러나 콘텐츠 공급자는 표시 상태이며 사용자가 잃어서는 안되는 입력된 내용도 없습니다. 이 때문에 안드로이드는 적합하다고 판단 될 때마다 콘텐츠 제공 업체를 종료 할 수 있습니다.

계약 클래스는 응용 프로그램이 콘텐츠 URI, 열 이름, 의도 작업 및 콘텐츠 공급자의 기타 기능으로 작업하는 데 도움이 되는 상수를 정의합니다. 계약 클래스는 공급자와 자동으로 포함되지 않습니다. 공급자의 개발자는 이를 정의한 다음 다른 개발자가 사용할 수 있도록 해야 합니다. Android 플랫폼에 포함된 많은 공급자는 패키지 android.provider에 해당 계약 클래스가 있습니다. 다음 목록에서는 전체 공급자에 적용되는 사용 권한부터 시작하여 공급자 권한의 범위를 설명한 다음 보다 세분화됩니다. 더 세분화 된 사용 권한이 더 큰 범위를 가진 사용자보다 우선합니다: 이제 개체를 닫는지 궁금할 수 있습니다. 글쎄, 난 🙂 않지만 이것은 문제가되지 않습니다. SQLiteOpen도우미는 SQLiteSession당 하나의 SQLiteDatabase 개체만 유지합니다. 이렇게 하면 개체에 액세스하는 것이 매우 효율적입니다. 버전 검사와 백그라운드에서 일어나는 모든 것을 사용하면 너무 잘 작동하지 않습니다. 내 SQLite 시리즈 내에서 내 곧 게시물 중 하나에 이러한 모든 세부 사항에 탐구 할 것 이다.

그래서 지금은 단순히 날 믿어 : 여기에 누출이 없다! 응용 프로그램 내에서 하나의 SQLiteOpenHelper 개체를 사용하는 경우 당신은 언제든지 하나의 SQLiteDatabase 개체를해야합니다 – 당신은 불필요하게 주위에이 개체를 전달하고 그런 식으로 누출하지 않는 한. 마지막으로 Android는 더 이상 필요하지 않을 때 콘텐츠 공급자를 파괴하고 모든 리소스를 정리합니다. 매우 편리합니다! 내부 오류가 발생하면 쿼리 결과는 특정 공급자에 따라 달라집니다. null을 반환하도록 선택하거나 예외를 throw할 수 있습니다.