갤럭시탭 10.1을 타켓으로 하는 프로젝트를 하는 중 HoneyComb(API Level 11)에서는 기본 webview 사용 시, html 문서내의 input box에 포커스가 주어졌을 때 Background 가 날아가는(?) 현상이 있다는 것을 발견 했습니다.

Graphic Rendering과 관련있는 문제로, 이를 해결하기 위해서는 Android 3.0 (API Level 11)에서 추가된 2D Graphics Hardware Accelerated 설정을 사용 해야 합니다.


Hardware Acceleration의 사용 방법 

Hardware Acceleration은 AndroidManifest.xml 또는 해당 클래스에서 정의 할 수 있습니다.

1.AndroidManifest.xml을 이용하는 방법
AndroidManifest.xml 의 <application> 태그에 android:hardwareAccelerated="true" 속성 추가 합니다.
application 이나 activity 수준에서 하드웨어 가속 설정을 할 때 사용하며, 특정 activity에서 하드웨어 가속에 대한 설정을 해제 할 때는 아래와 같이 사용 합니다.
<application android:hardwareAccelerated="true">
     <activity android:name="MainActivity" />
     <activity android:name="SubActivity" android:hardwareAccelerated="false" />
</application>


2. 해당 클래스에 정의 하는 방법

하드웨어 가속이 필요한 윈도우에 아래 코드를 추가 합니다.
getWindow().setFlags(
     WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
     WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);


Hardware Acceleration은 HoneyComb 이상의 SDK 에서만 설정 가능 하므로, Project Build Target을 Android 3.0(API Level 11) 이상으로 설정 해야 합니다.


Hardware Acceleration에 대한 더욱 자세한 정보는 아래 링크를 참조 하시기 바랍니다.
http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html



반응형

android 3.0~3.1의 Honeycomb 에서 java.lang.IllegalStateException: trying to requery an already closed cursor 에러를 만나게 된다면, startManagingCursor() 사용을 막으십시오.

startManagingCursor()는 Activity의 라이프사이클에 따라 알아서 커서를 관리해주기 때문에 편리한 메소드 이지만, Honeycomb 에서는 이것으로 인해 에러가 발생하는 상황이 있습니다.

Honeycomb의 버그인지, 아니면 무슨 이유가 있는 것인지 알 수는 없으나 android 2.3 디바이스 까지는 아무 문제 없던 소스가 Honeycomb 디바이스에서는 에러를 꾸엑꾸엑 뱉어내면서 죽어버리는 현상이 있습니다.

Honeycomb에서는 Cursor 사용 후 직접 close() 처리를 하는 것이 좋을 것 같습니다.


번역된 외국 사이트를 많이 봐서 그런가..
왠지 말투가 번역기 스럽다...
반응형

'Developer > Android' 카테고리의 다른 글

Unable to start activity ComponentInfo 에러  (3) 2011.08.18
Android Intent 활용 사례  (0) 2011.06.28
웹페이지에서 Activity 호출하기  (0) 2011.06.22

+ Recent posts