본문 바로가기

안드로이드75

클래스 로딩 문제 분석하기, Part 2: 기본적인 클래스 로딩 예외(Exception) (한글) 원문 : http://www.ibm.com/developerworks/kr/library/j-dclp2.html 안드로이드에서 AppWidget을 개발을 하다보니 ClassNotFoundException 예외가 발생했습니다. 처음 안드로이드 애뮬레이터를 실행 할 때, 이클립스에서 'Run'을 눌러 애뮬레이터를 실행하면 이 예외가 발생합니다. AVD Manager에가서 애뮬레이터를 실행한 뒤 'Run'을 하면 발생하지 않습니다. 아직도 정확한 이유는 모르겠습니다. 위의 링크를 따라가면, 이 예외는 문자열로 클래스를 호출 할 때, 클래스를 찾지 못한 경우 발생한다고 합니다. 그것으로 보아 안드로이드에서 AppWidgetProvider를 상속받은 클래스를 이름으로 찾은 듯하고, 이클립스에서 'Run'으로 실행.. 2011. 8. 4.
[안드로이드] Asset 폴더의 제약사항 및 대용량DB 넣기 원문 : http://taxhon.blog.me/60124799218 맨처음 데이타베이스를 사용하다가 이상하게 언젠가부터 뻑이 나서 제대로 동작이 되질 않았다. 알고봤더니 asset폴더는 데이타베이스 파일이 1mb가 넘으면 읽지를 못한다길래, 이 파일을 자바프로젝트에서 분리하고 그 파일을 설치될때 복사하는 방법을 찾았다. 테스트를 해보니..파일이 제대로 열리지 않았다. 다양한 소스를 테스트해보던 중 이런 글을 보았다. 대용량 DB 때문에 분할할려고 하나 보군요. 분할할 필요없습니다. Asset에다가 대용량 DB를 넣을 때, 확장자를 mp4나 mp3로 바꿔서 넣고, 이를 복사해서 사용하면 됩니다. 복사할 때 확장자를 바꾸면 됩니다. -> 이런 진짜로 동작이 되었다.;;;;;반나절이 안되는 시간을 고민하면서.. 2011. 8. 4.
안드로이드 폴더 삭제 안드로이드에서 파일을 이용한 프로젝트를 할 경우, 파일들을 폴더 단위로 관리 할 것입니다. 물론 귀찮으면 패키지 폴더에 하시구요ㅠㅠ 자바 이클립스로 개발하면, DDMS를 바로 볼 수 있습니다. DDMS에서 폴더 구조를 볼 수도있고, HostPC로 파일을 가져올 수도있습니다. 반대로 파일을 애물레이터에 넣을 수도있지요. 삭제도 가능합니다. 그러나.. 폴더는 삭제 할 수 없습니다. 폴더 삭제는 코드로 할 수 밖에 없는 것 같습니다. 혹시 다른 방법을 아시는 분은 댓글 부탁드립니다. 그리고 폴더를 삭제하려면, 하위 폴더 및 파일들을 모두 삭제 해야합니다. 소스코드는 '안드로이드펍'에서 jurinac님께서 작성하신 코드입니다. 간단히 설명하면, 파일은 삭제하고, 디렉토리는 하위 디렉토리로 이동합니다. 디렉토리로.. 2011. 7. 21.
Heap 메모리 분석 원문 : http://ecogeo.tistory.com/273 자바 프로세스에서 어떤 객체들이 얼만큼의 메모리를 점유하고 있는지 알아내기 위해 우리는 Heap 메모리를 분석합니다. 안드로이드에서는 달빅 VM의 힙 메모리를 3가지 수준에서 분석할 수 있습니다. 1. 개략적인 수준 - DDMS의 VM Heap 탭 아주 간략히 힙 메모리 통계 정보를 보여줍니다. Total/Allocated/Free 메모리 크기, 주요 타입별 객체 갯수 및 크기를 알 수 있습니다. 이게 전부입니다. 아쉽지만 특정 객체를 꼭 찝어서 할당된 갯수와 크기를 알 수는 없습니다. 그렇지만 메모리 누수가 의심될 때 실제로 누수인지 아닌지 간단하게 판단하는 용도로 활용할 수 있어보입니다. 의심되는 구간에 대해서 [Cause GC] 버튼을 .. 2011. 7. 7.
안드로이드 메모리 누수 줄이기 원문 : http://givenjazz.tistory.com/48 안드로이드 진저브리드(2.3)부터 이미지 기본 디코딩방식이 16비트에서 32비트로 변경되었고, 이미지를 처리할 때 메모리를 3~4배쯤 더 사용하는 듯하다. 메모리누수는 더 심해져서 액티비티를 종료해도 상황에 따라 메모리가 다 반환이 되질 않는다. 결국 메모리를 직접 환원해줘야한다. 내일인 17일부터 갤럭시S의 진저브리드 업데이트가 시작되고, 앱이 죽는 걸 많은 사람들이 겪게 될텐데, 이 문제를 해결하기 위해 자원마다 null로 설정해주고 gc를 하는 것은 자바에서 작성하기 꽤나 괴로운 일이다. 다행히 메모리를 많이 잡아먹는 drawable만 리커시브로 해제해줘도 대부분의 메모리는 환원이 된다. 스택오버플로우랑 구글을 검색해도 질문만 있고 .. 2011. 7. 7.
[안드로이드] 코드상에서 안드로이드 빌드 버전 확인하기 소스코드 안에서 안드로이드 버전을 확인 할 경우가 있습니다. 이것은 안드로이드 API 버전을 통해서 빌드된 안드로이드 버전을 알 수 가 있습니다. switch (Build.VERSION.SDK_INT) { case Build.VERSION_CODES.CUPCAKE: Log.d(TAG, "cupcake"); break; case Build.VERSION_CODES.DONUT: Log.d(TAG, "donut"); break; case Build.VERSION_CODES.ECLAIR: Log.d(TAG, "eclair"); break; case Build.VERSION_CODES.FROYO: Log.d(TAG, "froyo"); break; case Build.VERSION_CODES.GINGERBREAD:.. 2011. 7. 5.