ݺߣ

ݺߣShare a Scribd company logo
ContentProviser
    Data Adapter
       Activity
      SW Maestro 3기 1-1
Ligbuf팀 : 정승수, 송태웅, 김동우
          멘토 : 손영수
Content Provider
• 모든 패키지가 접근할 수 있는 공통된 저장
  공간이 없음



• Content Provider만이 어플리케이션 간에
  데이터를 공유할 수 있는 유일한 방법
 – 예 : 주소록, 전화 목록 등은 한 앱이 관리하지
   않음…
Content Provider
• getContentResolver()
  – 데이터 추가 ,수정, 삭제를 위한 공통적인 인터
    페이스

    • query() insert() update() delete() 등..

    • notifyChange()를 통하여 데이터의 변화를 옵져버
      들에게 통지 할 수 있음
Content Provider
• URI
  – 각각의 Content Provider는 그 데이터 집합을
    고유하게 식별하는 하나의 public 적인 URI 를
    제공
            1         2         3      4
  – 예): content://myprovider/Data/13
    •   1 : 표준 접두어 Content Provider라고 알린다.
    •   2 : Content Provider의 이름
    •   3 : Path부분
    •   4 : 레코드 값
Content Provider

                              ContentResolver




     URI1              URI2                     URI3           URI4

ContentProvider   ContentProvider       ContentProvider   ContentProvider
      1                 2                     3                 4
Data Adapter
• 데이터와 뷰 사이에 존재하는 다리 역할

• 데이터를 다양한 형태의 뷰로 보여주기 위한 객체
  – CursorAdapter: Cursor(DB Query 데이터를 담는다.)로부터 데이
    터를 selection 위젯에 공급하는 adapter.
   Content Provider 가 제공하는 data를 위젯에 연결할 때도 사용함.

  – SimpleAdapter: data를 XML Layout 파일에 지정된 View형태로 표
    하는데 사용 함.

  – ActivityAdapter, ActivityIconAdapter: 특정 Intent 발생 시 실행될
    activity의 이름이나 아이콘 목록을 위한 adapter.

  – ArrayAdapter: array나 java.util.List에 저장된 data를 위한 adapter.
Data Adapter
• notifyDataSetChanged()
  – Data가 변경되었는지 Refresh를 해야하는지
    첨부된 뷰에게 알린다.
Activity
• 다들 알고 있듯이 뷰를 관리 한다고 보면 된
  다.
ContentObserver
• Content Provider에서 NotifyChange()메서
  드를 호출 하면 등록 되있던
  ContentObserver에서 OnChange()가 호출
  됨
                                   Content
                                              3.OnChange()
                     1. Register   Observer


                                   Content    3.OnChange()
   ContentProvider                 Observer


                                   Content    3.OnChange()
                      2. Notify
                                   Observer
3객체의 관계

                                                  View            7. 뷰 변경
delete(URI, Query, Query);
       3. Data변경

                                 1.Adapter 등록



     ContentResolver          2. Observer를 등록
                              registerContentObserver(URI, false, Observer);
          Content
          Provider                           Content
                                                           Adapter
                                             Observer
            URI         5. OnChange() 호출

                                                     6. notifyDataSetChanged()
  4.NotifyChange(URI,NULL)호출
예제 동영상
예제 코드들
 1. View에 Adpater 등록 및 ContentProvider에 ContentObserver를 등록




ContentProvider에 ContentObserver를 등록 하는 부분은 가려져 있다.
예제 코드들
2. Service객체를 시작하여 4초마다 주소록에 임의의 주소 추가
예제 코드들                           주의



3. ContentProvider에서 Insert를 호출 하는 순간 자신의NotifyChange() 실행
예제 코드들                     주의



4. Observer내부에 Onchange에서 어댑터에 데이터들의 변경을 알린다.
예제 코드들


          주의




이것은 내부적으로 가려진 코드를 이해를 돕
기 위해 만든 코드라 돌아가진 않는다.
참고
• 손영수 멘토님 블로그 :
  http://arload.wordpress.com/2012/05/22/andr
  oid_opensource_pattern/

• ContentProvider내용참고:
  http://underclub.tistory.com/366

• Custom ContentObserver 및 Custom
  ContentProvider :
  http://olpost.com/r/1442205
Ad

Recommended

스프링 3.0 RESTful & restTemplate
스프링 3.0 RESTful & restTemplate
isyoon
안드로이드 오픈소스 그리고 패턴
안드로이드 오픈소스 그리고 패턴
YoungSu Son
2009 Advertising Industry Trend In Korea
2009 Advertising Industry Trend In Korea
Hyo Jin KIM
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
YoungSu Son
안드로이드 오픈소스 패턴 - 0.1
안드로이드 오픈소스 패턴 - 0.1
YoungSu Son
Nest JS (Kitworks Team Study 이본훈 발표 240315)
Nest JS (Kitworks Team Study 이본훈 발표 240315)
Wonjun Hwang
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
Gosu Ok
Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스
Tae Ho Kang
Service mesh(istio) monitoring
Service mesh(istio) monitoring
Jeong-Ho Na
2023.06.12 발표 자료 : JPA / 스프링 구조
2023.06.12 발표 자료 : JPA / 스프링 구조
HONG YONG JUN
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
NAVER D2
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
NAVER D2
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_post
Inho Kang
15ᅭᆯᄌƥᆨᅵᆫᄋơᆫᅳᅩᅵᅳᆸᄀƢᄇơᆯ
15ᅭᆯᄌƥᆨᅵᆫᄋơᆫᅳᅩᅵᅳᆸᄀƢᄇơᆯ
NAVER D2
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
Hong Min Kim
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
dgmit2009
Web server page_ed10
Web server page_ed10
hungrok
20160427 ROS 4차 강의 (for 아스라다 팀)
20160427 ROS 4차 강의 (for 아스라다 팀)
Yoonseok Pyo
안드로이드스터디 5
안드로이드스터디 5
jangpd007
Spring MVC
Spring MVC
ymtech
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
Sungju Jin
Spring portfolio2
Spring portfolio2
ssuser25d7ff
DDD Repository
DDD Repository
HyeonSeok Choi
YARN overview
YARN overview
JEONGPHIL HAN
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)
Sungjoon Yoon
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Amazon Web Services Korea
스프링 3.0 & RESTful
스프링 3.0 & RESTful
JavaCommunity.Org

More Related Content

Similar to Android ContentProvider Adapter Activity Relation (20)

Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스
Tae Ho Kang
Service mesh(istio) monitoring
Service mesh(istio) monitoring
Jeong-Ho Na
2023.06.12 발표 자료 : JPA / 스프링 구조
2023.06.12 발표 자료 : JPA / 스프링 구조
HONG YONG JUN
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
NAVER D2
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
NAVER D2
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_post
Inho Kang
15ᅭᆯᄌƥᆨᅵᆫᄋơᆫᅳᅩᅵᅳᆸᄀƢᄇơᆯ
15ᅭᆯᄌƥᆨᅵᆫᄋơᆫᅳᅩᅵᅳᆸᄀƢᄇơᆯ
NAVER D2
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
Hong Min Kim
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
dgmit2009
Web server page_ed10
Web server page_ed10
hungrok
20160427 ROS 4차 강의 (for 아스라다 팀)
20160427 ROS 4차 강의 (for 아스라다 팀)
Yoonseok Pyo
안드로이드스터디 5
안드로이드스터디 5
jangpd007
Spring MVC
Spring MVC
ymtech
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
Sungju Jin
Spring portfolio2
Spring portfolio2
ssuser25d7ff
DDD Repository
DDD Repository
HyeonSeok Choi
YARN overview
YARN overview
JEONGPHIL HAN
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)
Sungjoon Yoon
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Amazon Web Services Korea
스프링 3.0 & RESTful
스프링 3.0 & RESTful
JavaCommunity.Org
Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스
Tae Ho Kang
Service mesh(istio) monitoring
Service mesh(istio) monitoring
Jeong-Ho Na
2023.06.12 발표 자료 : JPA / 스프링 구조
2023.06.12 발표 자료 : JPA / 스프링 구조
HONG YONG JUN
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
NAVER D2
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
NAVER D2
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_post
Inho Kang
15ᅭᆯᄌƥᆨᅵᆫᄋơᆫᅳᅩᅵᅳᆸᄀƢᄇơᆯ
15ᅭᆯᄌƥᆨᅵᆫᄋơᆫᅳᅩᅵᅳᆸᄀƢᄇơᆯ
NAVER D2
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
Hong Min Kim
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
dgmit2009
Web server page_ed10
Web server page_ed10
hungrok
20160427 ROS 4차 강의 (for 아스라다 팀)
20160427 ROS 4차 강의 (for 아스라다 팀)
Yoonseok Pyo
안드로이드스터디 5
안드로이드스터디 5
jangpd007
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
Sungju Jin
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)
Sungjoon Yoon
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Amazon Web Services Korea

Android ContentProvider Adapter Activity Relation

  • 1. ContentProviser Data Adapter Activity SW Maestro 3기 1-1 Ligbuf팀 : 정승수, 송태웅, 김동우 멘토 : 손영수
  • 2. Content Provider • 모든 패키지가 접근할 수 있는 공통된 저장 공간이 없음 • Content Provider만이 어플리케이션 간에 데이터를 공유할 수 있는 유일한 방법 – 예 : 주소록, 전화 목록 등은 한 앱이 관리하지 않음…
  • 3. Content Provider • getContentResolver() – 데이터 추가 ,수정, 삭제를 위한 공통적인 인터 페이스 • query() insert() update() delete() 등.. • notifyChange()를 통하여 데이터의 변화를 옵져버 들에게 통지 할 수 있음
  • 4. Content Provider • URI – 각각의 Content Provider는 그 데이터 집합을 고유하게 식별하는 하나의 public 적인 URI 를 제공 1 2 3 4 – 예): content://myprovider/Data/13 • 1 : 표준 접두어 Content Provider라고 알린다. • 2 : Content Provider의 이름 • 3 : Path부분 • 4 : 레코드 값
  • 5. Content Provider ContentResolver URI1 URI2 URI3 URI4 ContentProvider ContentProvider ContentProvider ContentProvider 1 2 3 4
  • 6. Data Adapter • 데이터와 뷰 사이에 존재하는 다리 역할 • 데이터를 다양한 형태의 뷰로 보여주기 위한 객체 – CursorAdapter: Cursor(DB Query 데이터를 담는다.)로부터 데이 터를 selection 위젯에 공급하는 adapter. Content Provider 가 제공하는 data를 위젯에 연결할 때도 사용함. – SimpleAdapter: data를 XML Layout 파일에 지정된 View형태로 표 하는데 사용 함. – ActivityAdapter, ActivityIconAdapter: 특정 Intent 발생 시 실행될 activity의 이름이나 아이콘 목록을 위한 adapter. – ArrayAdapter: array나 java.util.List에 저장된 data를 위한 adapter.
  • 7. Data Adapter • notifyDataSetChanged() – Data가 변경되었는지 Refresh를 해야하는지 첨부된 뷰에게 알린다.
  • 8. Activity • 다들 알고 있듯이 뷰를 관리 한다고 보면 된 다.
  • 9. ContentObserver • Content Provider에서 NotifyChange()메서 드를 호출 하면 등록 되있던 ContentObserver에서 OnChange()가 호출 됨 Content 3.OnChange() 1. Register Observer Content 3.OnChange() ContentProvider Observer Content 3.OnChange() 2. Notify Observer
  • 10. 3객체의 관계 View 7. 뷰 변경 delete(URI, Query, Query); 3. Data변경 1.Adapter 등록 ContentResolver 2. Observer를 등록 registerContentObserver(URI, false, Observer); Content Provider Content Adapter Observer URI 5. OnChange() 호출 6. notifyDataSetChanged() 4.NotifyChange(URI,NULL)호출
  • 12. 예제 코드들 1. View에 Adpater 등록 및 ContentProvider에 ContentObserver를 등록 ContentProvider에 ContentObserver를 등록 하는 부분은 가려져 있다.
  • 13. 예제 코드들 2. Service객체를 시작하여 4초마다 주소록에 임의의 주소 추가
  • 14. 예제 코드들 주의 3. ContentProvider에서 Insert를 호출 하는 순간 자신의NotifyChange() 실행
  • 15. 예제 코드들 주의 4. Observer내부에 Onchange에서 어댑터에 데이터들의 변경을 알린다.
  • 16. 예제 코드들 주의 이것은 내부적으로 가려진 코드를 이해를 돕 기 위해 만든 코드라 돌아가진 않는다.
  • 17. 참고 • 손영수 멘토님 블로그 : http://arload.wordpress.com/2012/05/22/andr oid_opensource_pattern/ • ContentProvider내용참고: http://underclub.tistory.com/366 • Custom ContentObserver 및 Custom ContentProvider : http://olpost.com/r/1442205