본문 바로가기

안드로이드116

[안드로이드] Context를 Activity로 강제 타입 캐스팅시 발생하는 문제(Shutting down VM) 스토리 A다이알로그에 이미지 리스트를 보여주는 기능이 있었다. 그런데 이상하게도 정상적으로 화면에 보여질 때가 있는 반면, 'Shutting down VM' 이라는 무책임한 Log와 함께 앱이 죽어버리는 경우가 발생하고 있었다. 또한 앱은 키 입력 등, 모든 Event를 처리하지 못하고 있었다. 그리고 그 키 입력 처리를 못하므로써 ANR이 뒤 늦게 발생했다. 이러한 현상이 발생하는 이유를 알 수 가 없었고, 점점 오리무중으로 빠지고 있었다. 버그 원인 버그의 원인은 Context 타입의 ContextThemeWrapper를 Activity로 변환하면서 발생하는 오류였습니다. 이유는 알 수 없지만, Exception이 발생하지 않고 단순히 'Shutting down VM' 이라는 Log만 찍혔습니다. 이.. 2012. 10. 2.
[안드로이드] ListView의 fadingEdge 없애는 방법 시작하기 View 에는 fadingEdge라는 값을 설정 할 수 있습니다.그래서 ListView를 보면, 아이템 개수가 많을 경우 위/아래에 희미한 색상의 라인이 생기는 것을 볼 수 있습니다. FadingEdge 제거하기 안드로이드 Developer Document에는 아래의 attribute로 설정하라고 합니다. 이때 attribute는 1개 또는 그 이상을 선택해도 상관없습니다.android:requiresFadingEdge="[none | horizontal | vertical]" 하지만, 제가 사용하고 있는 framework에는 android:requiresFadingEdge 속성이 없더군요.대신 android:fadingEdge라는 속성이 있었습니다. 혹시 위의 attribute가 안되시면 an.. 2012. 9. 26.
[안드로이드] /system 디렉토리 remount 하기 링크 : adb remount가 안될 때 adb shell을 통해 remount 하기 제공 자료가 카페의 자료이기 때문에 링크를 통해서 보려면 가입을 해야 합니다.또는 네이버에서 직접 제목을 쳐서 보실 수 있습니다. 그래도 가입하면 도움이 많이 될 것 같네요. /system 디렉토리는 ro 속성으로 읽기만 가능합니다.그래서 rw로 변경하기 위해서 umount를 하고, mount를 다시 하려고 했지요..하지만, "umount: can't umount /system: Device or resource busy" 라면서 umount를 할 수가 없네요. /system 디렉토리 remount 하기 제가 사용하고 있는 보드는 /dev/block/mtdblock2를 /system으로 마운트 하고 있었습니다./syst.. 2012. 9. 19.
[안드로이드] 텍스트 파일의 캐릭터 셋(Character Set) 얻기 텍스트 파일를 읽으려면, 해당 파일의 인코딩 형식을 알아야 한다.그러면 파일의 인코딩 형식을 어떻게 알아 낼 수 있을까? 이 작업을 해주는 라이브러리가 제공 되고 있는데, 그 라이브러리 이름은 juniversalchardet 라고 한다. Google Code URL - http://code.google.com/p/juniversalchardet/ juniversalchardet이 아래 jchardet을 기반으로 만들어 진것으로 보인다. Sourceforge URL - http://sourceforge.net/projects/jchardet/files/ juniversalchardet 소스는 svn으로 받아야 한다. 편하게 다운로드 하기 위해서 압축파일로 첨부한다. 자막의 인코딩 형식을 알기 위해 사용했었.. 2012. 9. 4.
[안드로이드] 이클립스 업데이트 오류 (Install download0) 안드로이드 SDK 업데이트도 하면서... 이클립스도 업데이트나 하려고 했다. Help - Update Software 를 선택해서 업데이트를 하는 도중... 쿠궁...! An internal error occurred during: “Install download0″. 라는 아주 무서운 오류 메세지를 보여주셨다. 확인을 해주면 install download1 -> install download2 -> install download3 증가를 해주신다. 에잇! 이클립스 업데이트는 안하고 말겠다라는 의지를 갖고, 그냥 사용 하기로 했다. 안드로이드 프로젝트나 만들어 볼까 했더니만... 아직 인스톨이 안됐다고... 프로젝트를 못 만든다고 한다... 업데이트 다시 시도했더니 역시나 같은 오류.. 현재 이클립스가 .. 2012. 7. 27.
[안드로이드] AIDL에 Parcelable 데이터 사용하기 안드로이드에서 Remote Service를 사용하여 서비스를 제공 할 때, 자바 기본 타입 및 안드로이드에서 허락된 타입만 사용 할 수 있습니다. 하지만, 해당 서비스에 맞는 데이터 타입이 필요한 경우도 있습니다. 이 경우는 안드로이드 프레임워크 소스에서 수정해야 하는 일이라 일반 어플 개발자는 해당사항이 없는 경우 입니다. 제가 해볼 수 있는 것은 Parcelable 인터페이스를 상속 받아 데이터 타입 클래스를 생성해서 프로세스간에 통신이 될 수 있는 타입을 정의해 보는 것이였습니다. 하지만, 빌드를 해보면 이것만으로는 aidl에서 해당 타입을 사용 할 수 없다는 메세지를 봐야만 했죠. 방법은 의외로 간단했습니다. 안드로이드 소스를 찾아보면 이와 비슷한 용도로 사용되는 클래스들이 있습니다. 그 클래스들.. 2012. 7. 4.