SlideShare ist ein Scribd-Unternehmen logo
1 von 17
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

Weitere ähnliche Inhalte

Ähnlich wie Android ContentProvider Adapter Activity Relation

[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
NAVER D2
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
NAVER D2
 
안드로이드스터디 5
안드로이드스터디 5안드로이드스터디 5
안드로이드스터디 5
jangpd007
 
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)
Sungjoon Yoon
 
[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc
구 봉
 

Ähnlich wie Android ContentProvider Adapter Activity Relation (20)

Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스
 
Service mesh(istio) monitoring
Service mesh(istio) monitoringService mesh(istio) monitoring
Service mesh(istio) monitoring
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
 
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postK8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_post
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
 
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
 
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
 
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10
 
20160427 ROS 4차 강의 (for 아스라다 팀)
20160427 ROS 4차 강의 (for 아스라다 팀)20160427 ROS 4차 강의 (for 아스라다 팀)
20160427 ROS 4차 강의 (for 아스라다 팀)
 
안드로이드스터디 5
안드로이드스터디 5안드로이드스터디 5
안드로이드스터디 5
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
 
Spring portfolio2
Spring portfolio2Spring portfolio2
Spring portfolio2
 
DDD Repository
DDD RepositoryDDD Repository
DDD Repository
 
YARN overview
YARN overviewYARN overview
YARN overview
 
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
스프링 3.0 & RESTful
스프링 3.0 & RESTful스프링 3.0 & RESTful
스프링 3.0 & RESTful
 
[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc
 

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