안드로이드의 이벤트 처리 메커니즘과 Handler 개념을 이해하기 위해 먼저 스윙의 쓰레드에 대해 이해할 필요가 있다.

* 스윙의 이벤트 처리 쓰레드 관련 자료
 
  
Single 쓰레드 UI 모델
- 모든 UI 관련 작업은 하나의 쓰레드에서만 처리되어야 함. 그렇지 않으면 비정상적인 결과가 생김.
  => 멀티쓰레드로 하면 안되는 이유 : http://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html
- 그 하나의 쓰레드를 흔히 Event-Dispatch Thread(EDT)라고 부름.
- EDT는 UI의 무분별한 갱신을 막고 일관성있는 화면 갱신 메카니즘을 제공
- EDT에서의 GUI 이벤트를 처리하는 작업은 빨리 끝나야 하며, 그렇지 않으면 화면은 unresponsive 상태가 됨. 
  기억하시라. 화면 갱신 작업은 하나의 쓰레드에서만 처리된다는 것을.
- EDT는 사용자의 비동기적인 요구에 대응하기 위해 Event Queue를 유지하며
  사용자의 요구는 이벤트 큐에 일단 저장되었다가 적절한 시점에 일괄적으로 처리됨.
 
 
* 스윙의 주요 쓰레드
- Initial Thread : 초기 애플리케이션 실행. 여기서 UI를 만들지는 않음.
- Event-Dispatch Thread : GUI 이벤트 처리(리스너에 이벤트 전달해서 콜백메소드 실행) 및
   스윙 컴포넌트 method(대부분 thread-safe하지 않음) 처리. 
   UI를 생성하고 UI와 상호작용하는 모든 코드는 EDT에서 실행됨.
- Worker Thread(Background Thread) : 시간이 소요되는 작업은 EDT에서 처리하지 말고,
    백그라운드 쓰레드로 만들어서 처리후 결과만 UI에 반영
 
  
* 스윙 주요 클래스
- SwingWorker : 백그라운드 작업을 처리하면서 EDT와 상호작용할 수 있게 해줌
- SwingUtilities.invokeLater(aRunnable) : EDT의 다른 작업이 다 끝난 후에 주어진 작업을 처리

Posted by 에코지오
,
안드로이드도 이벤트 디스패치 쓰레드 모델을 구현하고 있을까?

[스윙 이벤트 디스패치 쓰레드 : 출처-javaworld]
Posted by 에코지오
,

[오디오 재생]

* 패키지의 assets/audio/oh.mp3 플레이
AssetFileDescriptor afd = getAssets().openFd("audio/oh.mp3");
MediaPlayer  audio_play = new MediaPlayer();
audio_play.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
audio_play.start();
 
* 패키지의 res/raw/oh.mp3 플레이
MediaPlayer  audio_play = MediaPlayer.create(context, R.raw.oh);
audio_play.start();
 
* 파일시스템의 /data/oh.mp3 플레이
MediaPlayer  audio_play = new MediaPlayer();
audio_play.setDataSource("/data/oh.mp3");
audio_play.start();
 

[비디오 재생]

* 파일시스템의 /data/oh.mp4 플레이
VideoView video = (VideoView) findViewById(R.id.video);
MediaController nc = new MediaController(this);
nc.setMediaPlayer(video);
video.setVideoPath("/data/oh.mp4");
video.start();

* 패키지의 res/raw/oh.mp4 플레이

VideoView에서는 패키지의 리소스 파일 재생 불가하며 직접 MediaPlayer를 이용해야함.
Posted by 에코지오
,
이벤트 리스너를 구현하는 클래스 유형

  • 익명 클래스로 구현 : 1회성 로직 구현. 대부분 이런식으로 구현하고 있음.
  • 내부 클래스 또는 액티비티 외부의 독립 클래스로 구현 : 재사용 가능함
  • 액티비티가 자체 구현 : 해당 이벤트가 이 액티비티에 한개만 존재하는 경우

Posted by 에코지오
,
okjsp.pe.kr 운영자이신 허광남(kenu)님이 발표하시는 세미나입니다.

- 2/25(목) 19시부터 21:30분까지. 포스코센터 서관 5층.
- 참가비 : 1~2만원

자세한 내용은 여기를..  http://okgosu.microtop10.com/archive/7

(날짜가 2/24일에서 25일로 변경됐네요)
Posted by 에코지오
,