2016-11-29 7 views
1

Android Content Provider에 관해 간단한 의문이 있습니다.행을 페치하기 위해 insert() 메소드에서 반환 된 것과 동일한 URI를 사용해야합니까?

단일 레코드를 db에 삽입하는 동안 메서드에서 가져온 _id를 추가하여 URI를 반환하고이 URI에 getContentResolver().notifyChange()을 호출하려고합니다.

이제 내 URI는 "content://CONTENT_AUTHORITY/TABLE_NAME/_id"이됩니다.

하지만 단일 레코드를 가져 오는 동안 다른 ID (복합 키)를 선택하여 페치하면 movie_id이됩니다.

그래서이 내 URI 내 URI의 정규 만/TABLE_NAME/# 기록과 일치하기 때문에

"content://CONTENT_AUTHORITY/TABLE_NAME/movie_id" 지금 내가 기록을 가져올 수있을 것입니다 가져올 수 있습니다.

그러나 처음 만들어진 URI는 어떻게 되었습니까? notifyChange() 메서드를 만들었습니까?

하나의 URI에 notifyChange(을 사용하고 있으므로이 방법을 사용하는 것이 좋지만 다른 URI를 사용하여 가져 오는 중입니까?

답변

1

실제로 정확히 insert() 메서드에서 반환하는 URI를 사용하면 동일한 동일한 개체를 쿼리 할 수 ​​있습니다. Obvisouly 당신은 단지 하나의 URI 형식을 가지고 있다면 더 쉽고, 어떤 워크 플로우는 매우 유용 할 수 있습니다.

하지만 다시 별칭 uris도 문제가되지 않으며 다른 고유 ID를 기반으로 테이블에서 행을 쿼리 할 수 ​​있습니다. 그러나 그렇게한다면 다른 URI를 사용하여 콘텐츠 공급자가 수행 할 쿼리를 알 수 있도록하십시오.

당신의 예에서

가, 나는 행 ID로 content://CONTENT_AUTHORITY/TABLE_NAME/_id 쿼리 항목을하게하고, 복합 키

으로 항목을 조회 할 수있는 content://CONTENT_AUTHORITY/TABLE_NAME/MOVIE/movie_id URI를 추가 할 것