달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

이건 좀.. 부크러운 정보이긴 합니다

제가 엄청 삽질하다가 MSDN보고 아...  한거 였으니깐요

다들 아시는 분들도 많으시겠지만..

저처럼 부끄러운일 안당하시도록 제가 총대 매고 적어 올립니다

 

스마트폰개발이 활성화 되면서 무엇보다 중요한 것은 UI입니다

(요즘은 사용자의 경험을 중요시한다고 해서 UX라고 부르기도 한답니다)

그러다보면 가장 쉽게 할 수 있는 것이 바로 이미지로 작업 하는 것 인데요

 

이렇게들 많이 사용하실 것 입니다

Bitmap imgBuf_Title = new Bitmap(480,800);

 

VWGA급 같은 경우 같은 WQVGA에 비해

같은 이미지의 영역에 표현하려면4배의 용량을 갖게 됩니다

이러다보면 무턱대고 Bitmap 객체 잔뜩 생성해서 이미지를 열심히 넣다보면

단말기의 실행메모리는 아직 여유가 있는데 프로그램이 죽어버리는 것을 보실 수 있는데요

 

이건 WinCE 단말기에서 그래픽 입출력을 담당하는 (간단하게 표현한 것 입니다) GWES.exe 프로세스가

20M정도 넘어가면 프로세스 자원 확보를 위해 자체적으로 관련 어플리케이션을 종료시키 때문 입니다

GWES.exe의 역할은 이곳에서 확인하세요 http://blog.naver.com/kri7001?Redirect=Log&logNo=30043684638

이런 상황이 오게 되는 것 이지요...

더 정확하게는 User Application에서 Data Abort에러가 발생하지만  watson에서 그 에러를 GWES에서 처리할 수 있도록 해주기 때문에 GWES.EXE에서 문제가 보이는 것처럼 되는 것 입니다

 

아무래도 장치 드라이버와 입출력 관련 디바이스를 직접적으로 제어하는 것 이다보니

많은 양의 데이터가 누적되어 있는 경우 안전을 위하여 자체적으로 어플리케이션을 종료 시킵니다

사용자가 원치 않는데 종료되는 원인 중 하나 이기도 하구요

 

재미있는것은 예전에 나온 단말기인 Axim X51v에서는 GWES.EXE의 누적이 거의 없는데

옴니아1, 옴니아2에서는 심각하게  누적되는 것이 눈에 보이네요

 

잡설이 좀 길었습니다만.. 결론은 간단합니다

 

Bitmap을 선언하실 때 다음처럼 선언해 주세요

Bitmap imgBuf_Title = new Bitmap(480,800,  PixelFormat.Format16bppRgb565 );

http://msdn.microsoft.com/ko-kr/library/system.drawing.imaging.pixelformat(VS.80).aspx

 

간단하게 32bit에서 16bit로 내려주는 것 만으로도 충분한 효과를 볼 수 있습니다

가장 좋은 것은 최대한 사용을 줄이고, 따로 관리하는 방법이겠지만..

어쩔수 없이 사용해야 한다면 저렇게 낮춰 주는게 명답이겠네요

 

그냥 책에 있는 예제만 보고 만들다보니 저런 간단한 곳에서 실수를 해버리네요..


:
Posted by Lunaness