2013-10-09 2 views
4

저는 안드로이드 개발에 대해 처음 보았습니다.하지만 콘텐츠 공급자에 대해 머리를 감싸는 데 어려움을 겪고 있으며, 단일 앱, 단일 DB SQLite 데이터 소스에 대한 장점 (있는 경우)이 무엇인지 설명합니다. 동기화 어댑터를 사용하려면 컨텐츠 공급자가 필요하지만 솔직히 말해서 Sync API가 너무 실망 스럽기 때문에 REST를 사용하여 원격 동기화 프로세스를 롤링하는 것보다 이점이 없다고 생각합니다.로컬 SQLite DB 용 Android 콘텐츠 제공 업체 : 이유가 무엇입니까?

SQLite DB를 통해 콘텐츠 공급자를 구현하면 안드로이드 관리 싱글 톤을 얻을 수 있지만, 싱글 톤 관리를 할 수있는 AndroidAnnotations를 사용하고 있으며, 오픈 커넥션을 제대로 관리하는 한 싱글 톤 DB 도우미가 꼭 필요하다고도 읽었다.

내가 누락 된 항목이 있습니까? 콘텐츠 공급자 API는 놀랍게도 저수준이고 단일 DB 앱에서 오류가 발생하기 쉽습니다. 특히 "손으로"URI 매핑을 관리하고 이상한 추상화 레이어를 도입하면 많은 가치를 부여하지 않는 것처럼 보입니다.

로컬 SQLite DB에 대한 콘텐츠 제공 업체의 가치가 있습니까? 그렇다면 거기에 저의 URI 매핑을 생성하는 프레임 워크가 있습니까? 아니면 엄격하게 자신의 롤을 사용합니까?

답변

6

먼저 Sync API는 서버에서 데이터를로드하는 것 이상을 수행합니다. 동기화 업데이트를 전체 시스템의 다른 응용 프로그램 동기화와 함께 일괄 처리하고 실행 전에 연결을 보장하며 전체 시스템의 배터리 수명을 최적화합니다 (running Sync Adapters periodicallytransferring data using sync adapters guide에서 설명).

두 번째로 콘텐츠 공급자를 사용하면 Loaders 프레임 워크 (지원 라이브러리에서도 사용 가능)와 CursorLoader을 통해 콘텐츠 공급자의 데이터 변경 사항으로 UI가 자동으로 업데이트되도록 할 수 있습니다. 이렇게하면 활동 전반에 걸쳐 필요한 상용구의 수를 크게 줄일 수 있습니다.

컨텐츠 제공자 자체의 보일러 플레이트가 문제가되는 경우 ProviGen과 같은 Annotation 프레임 워크를 사용하여 대다수 컨텐츠 제공자를 자동으로 생성 할 수 있습니다.

custom search suggestions 포함하고 컨텐트 프로를 확장하는 도우미 FileProvider 클래스는 무엇의 대부분을하지만 (다른 응용 프로그램에 응용 프로그램 개인 파일을 공유하는 콘텐츠 제공자의 도움으로 수행 할 수 수 있습니다 안드로이드의 일부 기능이 있습니다 그럴 필요가있다.)

UI 테스트가 훨씬 쉬워 질뿐만 아니라 제공된 MockContentProvider을 사용하여 활동 코드를 변경하지 않고도 특정 데이터 세트를 모의 할 수 있습니다 (당연히 콘텐츠 제공 업체의 데이터 만로드한다고 가정).

+0

매우 유용한 답변이며 CP가 필요한 맞춤 검색 제안을 알지 못했습니다. 감사합니다. ProviGen도 유용 할 것 같습니다. 콘텐츠 제공자가 지원하는 어댑터를 자동 완성을위한 데이터 소스로 사용하고 싶습니다. 내 DB에 적어도 10,000 개의 가능한 값을 가진 자동 완성 기능을 다루겠습니다. – jkraybill

+0

@jkraybill - 예. [CursorAdapter] (http://developer.android.com/reference/android/widget/CursorAdapter.html)는'CursorLoader'를 완벽하게 사용합니다.'onLoadFinished (Cursor 데이터)'는'mAdapter.swapCursor (data) '를 호출하여 어댑터의 데이터를 새로 고칩니다. – ianhanniballake

관련 문제