2012년 7월 10일 화요일

[안드로이드] API15>16젤리빈 변경 클래스 - ContentResolver

public final ContentProviderClient acquireUnstableContentProviderClient (Uri uri)

Since: API Level 16
acquireContentProviderClient(Uri)와 흡사하나, 대상 컨텐트 프로바이더의 안정성을 신뢰하지 않는 경우 사용한다. 이는 대상 컨텐트 프로바이더의 프로세스가 사라질 경우, 컨텐트 프로바이더에 의존된 프로세스들의 플랫폼 클린업 메카니즘을 해제 한다. 일반적으론, 한번 프로바이더를 얻으면 필요한 만큼 제약없이 사용 할 수 있으며, 프로세스가 백그라운드 상태여도 사라지지도 않는다고 가정 할 수 있다. 이 메소드를 사용 하면, 프로바이더와의 통신중 어떠한 오류가 발생 하더라도 나중에 재연결 할 수 있게, 반드시 close에 주의를 기울여야 한다. 특히, DeadObjectException을 잡아 컨텐트 프로바이더가 죽어버렸다는 걸 알 수 있는데, 이는 현재 ContentProviderClient 오브젝트가 유효하지 않으며, 이를 해제 해야 한다는 것을 나타낸다. 만일 프로바이더를 재시작해 새로운 작업을 수행하려 한다면, 새로 얻으면 된다.

public final ContentProviderClient acquireUnstableContentProviderClient (String name)

Since: API Level 16
acquireContentProviderClient(String)와 흡사 하나,  대상 컨텐트 프로바이더의 안정성을 신뢰하지 않는 경우 사용한다. 이는 대상 컨텐트 프로바이더의 프로세스가 사라질 경우, 컨텐트 프로바이더에 의존된 프로세스들의 플랫폼 클린업 메카니즘을 해제 한다. 일반적으론, 한번 프로바이더를 얻으면 필요한 만큼 제약없이 사용 할 수 있으며, 프로세스가 백그라운드 상태여도 사라지지도 않는다고 가정 할 수 있다. 이 메소드를 사용 하면, 프로바이더와의 통신중 어떠한 오류가 발생 하더라도 나중에 재연결 할 수 있게, 반드시 close에 주의를 기울여야 한다. 특히, DeadObjectException을 잡아 컨텐트 프로바이더가 죽어버렸다는 걸 알 수 있는데, 이는 현재 ContentProviderClient 오브젝트가 유효하지 않으며, 이를 해제 해야 한다는 것을 나타낸다. 만일 프로바이더를 재시작해 새로운 작업을 수행하려 한다면, 새로 얻으면 된다.

public final Cursor query (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder, CancellationSignal cancellationSignal)

Since: API Level 16
주어진 URI로 쿼리를 수행해, 결과 집합의 Cursor를 리턴 한다.
최적의 성능을 위해, 호출자는 다음과 같은 가이드 라인을 따라야 한다:
  • 사용되지 않을 데이터를 저장소에서 읽는 것을 막기 위해 명시적인 프로젝션을 사용하라. 
  • selection 파라메터에 명시적인 값 대신에 'phone=?'와 같은  물음표 파라메터 마커를 사용하여, 해당 값만 다르게 하여 캐 동일한 쿼리로 인식 될 수 있도록 하라.
Parameters
uri컨텐트를 명시하기 위해 content:// 스키마를 사용하는 URI.
projection리턴받을 column의 리스트. NULL을 넣으면 모든 column을 리턴 하므로 비효율적임.
selection어떤 row를 리턴 할지 SQL WHERE 구문(WHERE 자체는 제외)형식으로 선언한 필터. NULL을 넣으면 모든 주어진 URI의 모든 row를 리턴함.
selectionArgs만일 selection에 ?를 사용 했다면, 순서대로 selectionArgs의 값들로 치환된다. 값들은 Strings으로 묶이게 된다.
sortOrder각 row를 어떻게 나열할지 SQL ORDER BY 구문(ORDER BY 자체는 제외) 형식으로 지정. NULL을 넣으면 기본값인 "unordered"가 사용된다.
cancellationSignal처리 중에 해당 작업을 취소시키기 위한 시그널로 없으면 null지정. 작업이 취소되면 쿼리가 수행된 후 OperationCanceledException 이 던져 진다.
Returns
  • 첫 항목의 바로 전을 가리키는 Cursor 오브젝트, 또는 null
See Also

댓글 없음:

댓글 쓰기