[Android] 안드로이드 기초

July 31, 2011

 

Application 은 네 개의 component 로 구성

  • Activity
  • Service
  • Broadcast receiver
  • Content provider
1-3 Activity
직접 사용자와 GUI 인터페이스 작업을 수행 or 스크린에 우리가 제작한 화면을 출력하는 기능을 전문으로 하는 component
  • Activity 는 최소 하나 이상의 window 가 부여.
  • 생명 주기와 콜백 메서드
    • onCreate
    • onRestart
    • onStart
    • onResume
    • onPause
    • onStop
    • onDestory
  • Lifetime
    • Entire lifetime : onCreate ~ onDestory
    • Visible lifetime : onStart ~ onStop
    • Foreground lifetime : onResume ~ onPause
1-4 서비스
뒤에서 (background) 활동하는 component
  • StartService
  • BindService
1-5 Broadcast receiver
  • 불특정 다수의 애플리케이션을 대상으로 해당 이벤트를 broadcast intent 객체로 만들어 broadcast 한다.
  • registerReceiver() method 를 사용하여 리시버와 intentFilter를 등록.
  • AndroidManaifest.xml 의 receiver tag 내 리시버와 intentFilter 를 선언.
1-6 Cotent provider
공동으로 사용하는 데이터들을 읽고 쓸 수 있는 기능을 제공.
  • 데이터에 대한 고유한 이름으로 URI (Uniform Resource Identifier) 사용하여 데이터를 구분.
  • ex: content://com.example.transportationprovider/trains/122
1-7 Component 활성화
  • Activity, Service, Broadcast receiver : intent 에 의하여 활성화하고 작업을 요청 받음.
    • Activity 
      • Context.startActivity()
      • Activity.startActivityForResult()
      • 호출된 activity 는 getIntent() 호출하여 작업을 요청한 activity 의 요청 intent 볼 수 있음.
    • Service
      • Context.startService()
      • Context.bindservice()
      • 호출된 service 는 onStartCommand() 또는 onBind() method 를 통해 intent 객체를 전달받아 service 를 호출한 애플리케이션의 요청을 파악하게 되고, 필요한 서비스 작업을 실행.
    • Broadcast receiver
      • application 은 Context.sendBroadcast(), Context.sendOrderedBroadcast(), ContextsendStickyBroadcast() 와 같은 method 사용하여 intent 객체를 broadcast 할 수 있음.
      • 모든 BR 는 onReceive() 호출하여 broadcast intent 를 전달받게 됨.
  • Content provider : Content resolver 라는 클래스의 인스턴스에서 호출하는 메서드를 통해 필요한 작업을 요청받음.
1-8 Component 종료
  • CP : content resolver  의 요청에 응답하는 동안
  • BR : broadcast message 에 응답하는 동안에만 활성화 됨.
  • Activity 
    • finish()
    • finishActivity()
  • Service
    • stopSelf()
    • Context.stopService()
1-9 Intent
Intent  는 application 의 component – activity, service, BR 에게 작업을 요청하기 위해 필요한 데이터를 전달해주는 메시지에 해당하는 ‘전달 객체’로 보통 ‘intent 객체’ 라고 함.
  • 요청하는 component 
    • startActivity()
    • startService() 와 같은 method 호출
  • 수신하는 component
    • 특정 intent 를 수신하기 위한 intent filter 를 가지고 있어야 함.
  • 종류
    • 명시적 intent
      • component 이름
    • 암시적 intent
      • Action
        • Intent activity action
          • ACTION_MAIN
          • ACTION_VIEW
          • ACTION_EDIT
        • Broadcast action
          • ACTION_BATTERY_CHANGED
          • ACTION_BATTERY_LOW
          • ACTION_BOOT_COMPLETED
      • Category
        • CATEGORY_HOME
        • CATEGORY_BROWSABLE
      • Data
      • MIME type
      • Extras
        • Intent 가 Extras 에 필요한 값을 입력하면, android 는 extras 값을 Bundle 객체로 변환.
        • 위에서 만들어진 Bundle 객체는 intent 사용하여 application component 를 호출할 때, onCreate() callback method 의 파라미터로 전달됨.
          protected void onCreate(Bundle savedInstanceState)
        •  Bundle 객체는 HashMap<String, Object> data type 의 키-값 쌍으로 구성.
1-11 Thread
  • Thread 상속
    • java.lang package 의 Thread class 상속하고 run() method 를 오버라이드하여 작성.
  • Runnable interface 구현
    • java.lang package 의 Runnable interface 를 구현.
    • Runnable interface 에는 단 하나의 run() 추상 method 제공.
  • Thread 의 생명 주기
  • Thread 동기화
    • synchronized keyword
    • synchronized method
  • wait/notify method
1-12 Handler
Handler는 thread 와 상호작용하는 class 로 handler 역시 하나의 thread 이고, android 에서 제공하는 message queue 와 일대일로 대응.
  • 일반 thread 는 작업 요청을 위해 sendMessage() 또는 postRunnable() method 를 이용하여 message 를 message queue 에 보내는 방식으로 작업을 요청.
  • Message 란 handler 에게 요청하기 위해서 전달하는 message 객체 또는 Runnable 객체.
  • Handler 는 handleMessage() 통해 message  내용을 읽어 요청한 작업 내용을 수행.
  • Message 전달하기 위해 handler 의 obtainMessage() method 를 호출해서 시스템에서 관리하는 message pool 에서 message 를 획득.
  • Looper
    • 일반 thread 에서 핸들러를 사용하기 위해서는 looper 를 구현해야 함.
    • Looper 는 Thread-Unsafe 하기 때문에 single thread 로 동작.
    • Looper 의 message queue 는 handler 의 message queue 와 연결.
    • quit() 사용하여 종료.
    • prepare() 사용하여 looper 초기화.
    • Looper 가 멈출 때까지 message 를 갖고 오는 loop() 실행.

Related Posts

Facebook Comments

comments

No related posts.

tags:
posted in Android by admin

Follow comments via the RSS Feed | Leave a comment | Trackback URL

This site is protected by WP-CopyRightPro
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org